检查一组变量是否具有非假值?

时间:2013-10-16 02:30:24

标签: python

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

2 个答案:

答案 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)

取决于你真正想要什么,语义上。