检查多个变量在 Python 中是否不是 None

检查多个变量在 Python 中是否不是 None

Check if multiple variables are not None in Python

检查多个变量是否不是 None:

  1. 将变量包装在列表中。
  2. 使用生成器表达式迭代列表。
  3. 在每次迭代中,检查当前列表项是否不是None
  4. 将生成器对象传递给all()函数。
主程序
a = 'a' b = 'b' c = 'c' if all(item is not None for item in [a, b, c]): print('Multiple variables are NOT None') else: print('At least one of the variables stores a None value')

我们使用方括号将变量添加到列表中,并使用生成器表达式迭代列表。

生成器表达式用于对每个元素执行一些操作,或者选择满足条件的元素子集。

在每次迭代中,我们检查当前列表项是否存在None并返回结果。

最后一步是将generator对象传递给all()函数。

all()内置函数将可迭代对象作为参数,如果True可迭代对象的所有元素都为真(或可迭代对象为空)则返回。

如果所有变量都不是Noneall() 函数将返回True,否则False返回。

另一种方法是使用in运算符。

检查多个变量是否不是 None:

  1. 将变量包装在一个序列中(例如元组或列表)。
  2. 使用not in运算符检查是否None不是序列的成员。
  3. 如果序列不包含None,则变量不是None
主程序
a = 'a' b = 'b' c = 'c' if None not in (a, b, c): # 👇️ this runs print('Multiple variables are NOT None')

这种方法看起来比前一种方法简单得多。但是,inand
not in运算符会检查是否相等,例如None != a,None != b等。

这在 Python 中不是一个好的做法,因为建议检查None
使用
is关键字。

在一些非常罕见的情况下,使用等于和不等于来检查可能None会导致混淆行为,因此 PEP8 风格指南建议在测试.isis notNone

in 运算符
测试成员资格

例如,如果是 的成员,则
x in l计算为 ,否则计算为TruexlFalse

x not in l返回 的否定x in l

另一种方法是and多次使用运算符。

主程序
a = 'a' b = 'b' c = 'c' if a is not None and b is not None and c is not None: print('Multiple variables are NOT None')

通常不推荐这样做,因为它非常重复且难以阅读。

if语句首先检查a变量是否不是None如果是,则if语句​​短路返回False而不检查以下任何条件。

如果表达式x and y为假,则返回左边的值,否则返回右边的值。

主程序
result = False and 'hello' print(result) # 👉️ False

所有不真实的值都被认为是虚假的。Python 中的虚假值是:

  • 定义为 falsy 的常量:NoneFalse.
  • 0任何数字类型的(零)
  • 空序列和集合:(""空字符串),()(空元组),[]
    (空列表),
    {}(空字典),set()(空集),range(0)(空范围)。

因此,如果左侧的值是上述任何虚假值,则返回左侧的值。

最好使用该all()函数来检查多个变量是否不是None,因为这种方法没有任何边缘情况并且可读性很强。
主程序
a = 'a' b = 'b' c = 'c' if all(item is not None for item in [a, b, c]): print('Multiple variables are NOT None') else: print('At least one of the variables stores a None value')