一if-elif-else语句(elifelse可选)
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子块
实例
fromcontextlibimportcontextmanager
contextmanagerdeffunction(name,mode):
try:
f=open(name,mode)
yieldf
finally:
f.close()