检查多个变量在 Python 中是否不是 None
Check if multiple variables are not None in Python
检查多个变量是否不是 None:
- 将变量包装在列表中。
- 使用生成器表达式迭代列表。
- 在每次迭代中,检查当前列表项是否不是
None
。 - 将生成器对象传递给
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
可迭代对象的所有元素都为真(或可迭代对象为空)则返回。
如果所有变量都不是
None
,all()
函数将返回True
,否则False
返回。另一种方法是使用in
运算符。
检查多个变量是否不是 None:
- 将变量包装在一个序列中(例如元组或列表)。
- 使用
not in
运算符检查是否None
不是序列的成员。 - 如果序列不包含
None
,则变量不是None
。
主程序
a = 'a' b = 'b' c = 'c' if None not in (a, b, c): # 👇️ this runs print('Multiple variables are NOT None')
这种方法看起来比前一种方法简单得多。但是,in
and
not in
运算符会检查是否相等,例如None != a
,None != b
等。
这在 Python 中不是一个好的做法,因为建议检查None
使用is
关键字。
在一些非常罕见的情况下,使用等于和不等于来检查可能
None
会导致混淆行为,因此 PEP8 风格指南建议在测试.is
is not
None
in 运算符
测试成员资格。
例如,如果是 的成员,则x in l
计算为 ,否则计算为。True
x
l
False
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 的常量:
None
和False
. 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')