很多时候,在我的 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 的解决方案来检查变量是否具有非假值。
很多时候,在我的 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 的解决方案来检查变量是否具有非假值。
你可以使用any()
,交换你的 if 和 else 子句:
if any((foo, bar, baz)):
do_something(foo, bar, baz)
else:
raise SomeException
从技术上讲,您不是在检查是否存在,而是在检查非假值(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)
取决于你真正想要的,在语义上。