很多时候,在我的Python代码中,我会发现自己在做类似的事情:
foo = something()
bar = something()
baz = something()
if not foo and not bar and not baz:
raise SomeException
else:
do_something(foo, bar, baz)
我想知道是否有更多的Pythonic解决方案来检查变量是否具有非假值。
答案 0 :(得分:3)
您可以使用any()
,交换if和else子句:
if any((foo, bar, baz)):
do_something(foo, bar, baz)
else:
raise SomeException
答案 1 :(得分:3)
从技术上讲,你没有检查存在,你正在检查一个非假名值(如果变量不存在,你会得到一个NameError
。
那说,你可以试试这个:
if any((foo, bar, baz)):
do_something(foo, bar, baz)
else:
raise SomeException
或者这个:
if not all((foo, bar, baz)):
raise SomeException
else:
do_something(foo, bar, baz)
取决于你真正想要什么,语义上。