是否有更短的方法来执行以下for-with
组合:
for resource in gen_resources():
with resource:
DoWork1(resource)
.
.
DoWorkN(resource)
如果可能的话,我想避免额外的行+缩进。
资源可以是在离开循环迭代时必须完成的任何东西(打开文件、活动对象等)
是否有更短的方法来执行以下for-with
组合:
for resource in gen_resources():
with resource:
DoWork1(resource)
.
.
DoWorkN(resource)
如果可能的话,我想避免额外的行+缩进。
资源可以是在离开循环迭代时必须完成的任何东西(打开文件、活动对象等)
with
您可以创建一个对每个元素执行语句的生成器函数:
def iterate_with(iterable):
for element in iterable:
with element:
yield element
采用:
for resource in iterate_with(gen_resources()):
DoWork(resource)
我可能仍然会使用您的原始代码,因为代码的读者可能不清楚with
这里使用了该语句。
只是因为你在里面有一个声明with
:
for resource in gen_resources():
with resource: DoWork(resource)
这似乎通常不受欢迎,但我不知道为什么 -for
并且if
可以做同样的事情,而且非常方便......