首页 > 代码库 > 第十章:Python の 网络编程进阶

第十章:Python の 网络编程进阶

本課主題

  • Python中的作用域补充
  • socketserver 源码
  • 本周作业

 

Python中的作用域补充

  1. Python世界里沒有块级作用域的在 Java/C+ 世界里没法打印 name。
    技术分享
    # 在 Java/C+ 世界里没法打印 name# 但在 Python/ JavaScript 世界里可以打印 name>>> if 1 == 1:...     name = Janice... >>> print(name)Janice
    Python中无块级作用域(小知识点一)
    技术分享
    >>> for i in range(10):...    name = i... >>> print(name)9
    Python中无块级作用域(小知识点二)
  2. 但在 Python/ JavaScript 世界里可以打印 name。在 Python 中是以函数作为作用域。
    技术分享
    >>> del name>>> def func():...     name = Janice... >>> print(name)Traceback (most recent call last):  File "<stdin>", line 1, in <module>NameError: name name is not defined
    Python 中是以函数作为作用域(小知识点三)
  3. Python是有作用域链条,对于作用域来说,在函数没有执行之前,它的作用域已经确定啦,作用域链也已经确定啦
    技术分享
    >>> name = alex# 这是 f1()是作用域,它是一个内部的作用域>>> def f1():...     print(name)... # 这是 f2()是作用域>>> def f2():...     name = eric...     f1()... >>> f2()alex
    Python是有作用域链条(小知识点四)
    技术分享
    >>> name = alex# 这是 f1()是作用域,它是一个内部的作用域>>> def f1():...     print(name)... # 这是 f2()是作用域>>> def f2():...     name = eric...     return f1... >>> ret = f2()>>> ret() # 这相当于运行 f1()alex
    Python是有作用域链条(小知识点五)
  4. For 循环,然后把每一个元素都加1,最后生成一个列表
    技术分享
    # 它会执行一个 For 循环,然后把每一个元素都加1,最后生成一个列表li = [x+1 for x in range(10) if x > 6]print(li)
    Python lambda + for 循环(小知识点六)
    技术分享
    >>> li2 = [lambda :x for x in range(10)]>>> ret = li2[0]()>>> print(ret)9
    Python lambda + for 循环(小知识点七)
    技术分享
    >>> li = []>>> for i in range(10):...     def f1(x=i):...        return x...     ...     li.append(f1)... >>> print(li[0]())0>>> print(li[1]())1>>> print(li[2]())2
    Python lambda + for 循环(小知识点八)

      

socketserver 源码

用到了IO多路復用

多线程、多進層、協程 

 

 

 

本周作业

 

 

 

day10作业

 

參考資料

银角大王:Python之路【第七篇】:线程、进程和协程

金角大王:

 

第十章:Python の 网络编程进阶