ola*_*ndo 0 python with-statement
我想这有点滥用这个功能,但我仍然很好奇它是否可以完成 - 我想做的事情如下:
with conditional(a):
print 1
Run Code Online (Sandbox Code Playgroud)
因此print 1只有在== True时才执行该部分.这可能吗?
编辑:像下面的人一样,这是一种可怕的风格.这只是一个谜语\问题.不要在家里试试,不要因为胆小的人等.
没有真正的理由这样做,因为条件已经使用if语句提供:
if a == True:
print 1
Run Code Online (Sandbox Code Playgroud)
但是,如果你只是在寻求乐趣,答案是你不能真的.要阻止with内容执行,conditional需要以某种方式停止执行,在其__enter__方法中.但它能做到这一点的唯一方法是引发一个异常,这意味着没有其他代码会运行,除非你with用一个try语句包装来处理案例a != True
编辑:看到我在评论和投票中被起诉使用OP的条件(a == True)我考虑将其更改为if a,这当然是Python中用于测试条件的习语.但是,我们不知道 OP的想法是什么,以及他是否真的想a成为一个布尔值,并且如果a = [1](通过if a)我不想要执行块我决定保留原样.