with
语句的主要用途是对语句中使用的对象进行异常安全清除。with
确保关闭文件,释放锁,还原上下文等。
如果发生异常,csv.reader是否有要清除的内容?
我会去:
with open("myfile.csv") as f:
for row in csv.reader(f):
# process row
您无需提交修补程序即可使用csv.reader
和with
声明。
import contextlib
模块contextlib中的函数contextmanager的帮助:
contextmanager(func)
@contextmanager decorator.
典型用法:
@contextmanager
def some_generator(<arguments>):
<setup>
try:
yield <value>
finally:
<cleanup>
这使得:
with some_generator(<arguments>) as <variable>:
<body>
等效于此:
<setup>
try:
<variable> = <value>
<body>
finally:
<cleanup>