0

很多时候,在我的 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 的解决方案来检查变量是否具有非假值。

4

2 回答 2

3

你可以使用any(),交换你的 if 和 else 子句:

if any((foo, bar, baz)):
    do_something(foo, bar, baz)
else:
    raise SomeException
于 2013-10-16T02:33:26.323 回答
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)

取决于你真正想要的,在语义上。

于 2013-10-16T02:33:48.963 回答