【发布时间】:2018-05-23 21:05:52
【问题描述】:
有没有更好的方法来实现这一点:
if condition:
with context:
do_the_thing()
else:
do_the_thing()
本质上,在这两种情况下,都做了同样的事情,除了如果条件为真,它是在特定的上下文中完成的。
【问题讨论】:
-
你可以创建一个上下文工厂。如果不需要上下文,它会给你一个不做任何事情的假人。这样,您就不需要在整个代码中使用条件。
-
你可以给你的 ContextManager 一个属性,它会在
__enter__方法中检查它。所以with context(condition):,如果condition是False,则不要运行任何__enter__逻辑。 (有点hacky!)
标签: python