一 if-elif-else语句(elif else 可选)
if 有逻辑值式:
(缩进)代码
(缩进)代码
……
elif:
(缩进)代码
(缩进)代码
……
else :
(缩进)代码
(缩进)代码
……
二 for/while循环
1.for循环(循环次数已知)
for 迭代变量 in 可迭代对象:
(缩进)代码
(缩进)代码
……
else:
(缩进)代码
(缩进)代码
……(在循环正常结束时执行)
>用迭代变量将一个可迭代对象值依次取出(依次赋值给迭代变量),直到可迭代
对象耗尽,可迭代对象有几个元素就循环几次。
>可使用range() range(x)返回一个x个元素的可迭代对象
>迭代变量可以为符号序列,此时可迭代对象应为对应嵌套序列,每个符号序列内的迭代变量取每个可迭代对象中对应的值,其中符号变量的[]和()可省
如:For [[[x,y],[z,w]]] in [[[1,2],[3,4]]],[[[5,6],[7,8]]]:
>循环非正常结束:程序强制结束,遇到break,
2.while循环(循环次数未知)
while 有逻辑值式:
(缩进)代码
(缩进)代码
……
else:
(缩进)代码
(缩进)代码
……(在逻辑值为零时执行)
3.break语句用来跳出一层循环
4.continue语句结束本次循环继续下层循环
三 上下文管理器
1.上下文管理器语法
with [as ]语句
with 对象 [as 变量]:
(缩进)语句组
2.类实现上下文管理
>该对象中必须有__enter__()方法和__exit__()方法
>首先执行对象里面的__enter__函数,它的返回值会赋给as后面的变量。然
后开始执行语句组中的语句,不论成功失败(比如发生异常、错误,设置
sys.exit()),在语句组执行完成后,都会执行对象中的__exit__函数
>如file对象的__enter__会返回file对象的地址,__exit__会关闭文件
3.生成器实现轻量级上下文管理
>在函数中使用try-finally语句,在try块中使用yield做返回值。
>首先执行生成器里的try子块,它的yield返回值会赋给as后面的变量。然
后开始执行语句组中的语句,不论成功失败(比如发生异常、错误,设置
sys.exit()),在语句组执行完成后,都会执行生成器里的finally子块
>实例
from contextlib import contextmanager
@contextmanager
def function(name, mode):
try:
f = open(name, mode)
yield f
finally:
f.close()