1. with用法
- 要使用with语句,首先要弄明白上下文管理器的概念,有了上下文管理器,with语句才能正确工作。上下文管理器实现了上下文管理协议,而上下文管理协议规定了所有支持上下文管理器的对象都要实现enter()和exit()借口。
- with语法如下:
with context_expression [ as target(s) ]:
with-body
- 这里的context_expression会返回一个上下文管理对象,该对象并不赋值给as子句中的target(s),如果制定了as语句的话,会将上下文管理器的enter()方法的返回值赋值给target(s)。
with open("testFile.txt") as f:
buf = f.read()
print buf //使用with之后就不需要显式执行文件关闭操作了,with执行完成后会自动关闭文件。
- 此语句在with语句结束之后会自动执行文件的关闭操作。不管在处理文件过程中是否发生了异常,都能保证with语句执行完毕后关闭打开的文件句柄。此with语句等价于:
try:
f = open('testFile.txt')
buf = f.read()
print buf
finally:
f.close() //中会执行到此,关闭文件句柄。
2. yield 生成器(generator)
https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/