在多个变量中检查无

时间:2013-12-03 16:55:27

标签: python

a = 'asd'
b = 'dsa'

if a is not None and b is not None:
    pass

有什么方法可以改进这段代码吗?

也尝试过:

if not (a is None, b is None):

if not (a, b is None):

两者都不起作用。

7 个答案:

答案 0 :(得分:3)

使用内置功能all()

a = 'asd'
b = 'dsa'

print all([a,b])
#True

如果一个或多个变量为None,则会生成False


因此,如果你想在某些条件下使用它,代码将是:

a = 'asd'
b = 'dsa'

if all([a,b]):
    print 'All True!!!!'
#All True!!!!

答案 1 :(得分:1)

您是否在寻找更好的or?如果是这样,你可以这样做 -

>>> a = None
>>> b = 'dsa'
>>> if None in [b,a]: print "hi"
... 
hi

答案 2 :(得分:1)

有一个版本非常接近你的第一次尝试:

if not (a is None or b is None):

虽然我不相信这样做好多了......

答案 3 :(得分:1)

if not(a is None or b is None)

Yay De Morgan's Laws

答案 4 :(得分:0)

If a and b

没问题 a is none等于a

中的if.. else..

答案 5 :(得分:0)

您可以将要测试的所有值放在列表中。根据结果​​迭代该列表和分支。像

这样的东西
a = None
b = None
c = 1
values = [a,b,c]
    for v in values:
        if v == None: #or possibly just if v:
            break

如果任何值不是None,您可以将break替换为您想要采取的任何操作。

答案 6 :(得分:0)

如果这是你做得很多的话,你可以这样做:

def hasNone(*args):
    for i in args:
        if i is None:return True
    return False

然后

if not hasNone(a,b,etc):
    pass