如何在Python中引用空对象?


当前回答

上面的答案只会为None的结果为True,但存在float('nan')这样的东西。你可以使用pandas isnull:

>>> import pandas as pd
>>> pd.isnull(None)
True
>>> pd.isnull(float('nan'))
True
>>> pd.isnull('abc')
False
>>> 

或者没有熊猫:

>>> a = float('nan')
>>> (a != a) or (a == None)
True
>>> a = None
>>> (a != a) or (a == None)
True
>>> 

这样做的原因是float('nan') != float('nan'):

>>> float('nan') == float('nan')
False
>>> float('nan') != float('nan')
True
>>> 

其他回答

在Python中,“null”对象是单例None。

要检查某个值是否为None,使用is标识符:

if foo is None:
    ...

它不像其他语言那样叫null,而是None。这个对象总是只有一个实例,所以如果需要,可以检查x is None(标识比较)是否相等,而不是x == None。

上面的答案只会为None的结果为True,但存在float('nan')这样的东西。你可以使用pandas isnull:

>>> import pandas as pd
>>> pd.isnull(None)
True
>>> pd.isnull(float('nan'))
True
>>> pd.isnull('abc')
False
>>> 

或者没有熊猫:

>>> a = float('nan')
>>> (a != a) or (a == None)
True
>>> a = None
>>> (a != a) or (a == None)
True
>>> 

这样做的原因是float('nan') != float('nan'):

>>> float('nan') == float('nan')
False
>>> float('nan') != float('nan')
True
>>> 

在Python中,要表示值的缺失,可以为对象使用None值(types.NoneType.None),为字符串使用""(或len() == 0)。因此:

if yourObject is None:  # if yourObject == None:
    ...

if yourString == "":  # if yourString.len() == 0:
    ...

关于“==”和“is”之间的区别,使用“==”测试对象的身份应该足够了。然而,由于操作“is”被定义为对象标识操作,使用它可能比使用“==”更正确。不确定是否有速度上的差异。

总之,你可以看看:

Python内置常量文档页。 Python真值测试文档页。

根据真值测试,'None'直接测试为FALSE,所以最简单的表达式就足够了:

if not foo: