我知道不建议比较类型,但我有一些代码在 if elif 系列中执行此操作。但是,我对 None 值如何工作感到困惑。
def foo(object)
otype = type(object)
#if otype is None: # this doesn't work
if object is None: # this works fine
print("yep")
elif otype is int:
elif ...
为什么我可以与is int
等等进行比较,但不能与is None
?types.NoneType 似乎在 Python 3.2 中消失了,所以我不能使用它......
以下
i = 1
print(i)
print(type(i))
print(i is None)
print(type(i) is int)
印刷
1
<class 'int'>
False
True
然而
i = None
print(i)
print(type(i))
print(i is None)
print(type(i) is None)
印刷
None
<class 'NoneType'>
True
False
我想None
是特别的,但什么给了?NoneType
确实存在,还是 Python 对我撒谎?