有没有比使用全局变量更好的方法从上下文管理器中获取有趣的值?
@contextmanager
def transaction():
global successCount
global errorCount
try:
yield
except:
storage.store.rollback()
errorCount += 1
else:
storage.store.commit()
successCount += 1
其他可能性:
单例
某种全局...
元组作为上下文管理器的参数
使函数更具体地解决问题/减少可重用
将特定属性保存为上下文管理器参数的实例
与元组相同的问题,但更易读
在保存值的上下文管理器末尾引发异常。
真是个坏主意
最佳答案
参见 http://docs.python.org/reference/datamodel.html#context-managers
创建一个保存成功和错误计数的类,并实现 __enter__
和 __exit__
方法。
关于python - 我应该如何从 with 语句返回有趣的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/877709/