第十章:Python の 网络编程进阶
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十章:Python の 网络编程进阶相关的知识,希望对你有一定的参考价值。
本課主題
- Python中的作用域补充
- socketserver 源码
- 本周作业
Python中的作用域补充
- Python世界里沒有块级作用域的:在 Java/C+ 世界里没法打印 name。
# 在 Java/C+ 世界里没法打印 name # 但在 Python/ JavaScript 世界里可以打印 name >>> if 1 == 1: ... name = ‘Janice‘ ... >>> print(name) Janice
>>> for i in range(10): ... name = i ... >>> print(name) 9
- 但在 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是有作用域链条,对于作用域来说,在函数没有执行之前,它的作用域已经确定啦,作用域链也已经确定啦
>>> name = ‘alex‘ # 这是 f1()是作用域,它是一个内部的作用域 >>> def f1(): ... print(name) ... # 这是 f2()是作用域 >>> def f2(): ... name = ‘eric‘ ... f1() ... >>> f2() alex
>>> name = ‘alex‘ # 这是 f1()是作用域,它是一个内部的作用域 >>> def f1(): ... print(name) ... # 这是 f2()是作用域 >>> def f2(): ... name = ‘eric‘ ... return f1 ... >>> ret = f2() >>> ret() # 这相当于运行 f1() alex
- For 循环,然后把每一个元素都加1,最后生成一个列表
# 它会执行一个 For 循环,然后把每一个元素都加1,最后生成一个列表 li = [x+1 for x in range(10) if x > 6] print(li)
>>> li2 = [lambda :x for x in range(10)] >>> ret = li2[0]() >>> print(ret) 9
>>> 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
socketserver 源码
用到了IO多路復用
多线程、多進層、協程
本周作业
day10作业
參考資料
以上是关于第十章:Python の 网络编程进阶的主要内容,如果未能解决你的问题,请参考以下文章