什么是python关键字"with"用于?
示例来自:http://docs.python.org/tutorial/inputoutput.html
>>> with open('/tmp/workfile', 'r') as f:
... read_data = f.read()
>>> f.closed
True
Run Code Online (Sandbox Code Playgroud) 以下语法是否关闭该文件:
lines = [line.strip() for line in open('/somefile/somewhere')]
Run Code Online (Sandbox Code Playgroud)
如果你可以证明它是做什么或不做的话,可以获得奖励积分......
TIA!
例如,以下代码不是内联的:
with x:
do(stuff)
Run Code Online (Sandbox Code Playgroud)
我可以像这样单行:
with x: do(stuff)
Run Code Online (Sandbox Code Playgroud)
但是我想知道是否有一种方法可以做这样的事情(内联):
a = [(lambda x: with x: do(stuff))(x) for x in someList]
Run Code Online (Sandbox Code Playgroud)
编辑:
详细说,我有一个对象列表,每个对象都有自己的上下文。这意味着do(stuff)使用时的行为会有所不同,with x并且上面的语句将遍历该列表中的每个对象,输入它们的上下文,运行do(stuff),然后继续下一个。
由于按照我的尝试进行此操作无效,因此我想知道是否有任何方法以及如何执行此操作。
上面代码的扩展版看起来像这样(并且可以正常工作):
a = []
for x in someList:
with x: a.append( do(stuff) )
Run Code Online (Sandbox Code Playgroud)