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/