
None 表示一个特殊的状态,被用来定义一个空变量或者对象,它是NoneType类的数据类型。
>>> x = None
>>> type(x)
<class ‘NoneType’>
>>>
Python的NoneType
None是NoneType 类的唯一实例,任何想再次实例化的请求都会返回同样的对象,保证None实例的唯一性。许多算法都将它作为异常值来对待,在许多语言和库中表名其他值的存在性。
用操作符检查变量是否是None:
>>>foo=None
>>> if foo==None:
… print(“是None”)
…else:
… print(“不是None”)
…
是None
>>>
为了初始化某个变量,可以将None赋值给这个变量,置空。它和0, False, 或空字符串不同。 None是一个数据类型,如int, float, 等等。并且只有None才是None。
可以检查 Python None的内部实现。
>>> dir(None)
[‘__bool__’, ‘__class__’, ‘__delattr__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__form at__’, ‘__ge__’, ‘__getattribute__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__le__’, ‘__lt__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’]
>>>
- 除了 __setattr__, 其他都是只读属性,所以不能改变None的属性。
用 == 操作符检查变量是否是None:
>>>foo=None
>>> if foo==None:
… print(“是None”)
…else:
… print(“不是None”)
…
是None
>>>
Python 的Null 和None 关键字
没有非空,只有 None。用Python的识别函数id(),可以检查 None的唯一性,它返回唯一标识码,每一个对象都有一个。如果两个变量的id是相同的,说明引用的是同一个对象。
NoneType = type(None)
print(id(None))
my_none = NoneType()
print(id(my_none))
another_none = NoneType()
print(id(another_none))
def foo():pass
return_value = foo()
print(id(return_value))
输出
1665592064
1665592064
1665592064
1665592064
None 和 False 比较:
>>> print(None==False)
False
点点滴滴
- None 是 NoneType的一个实例
- 不能创建另外的NoneType实例
- None 不同于False
- None 不能有新的属性
- None 的属性不能改变
- None 不是空字符串
- None 不是零
- 如果函数没有返回任何东西,说明是 None
- 不能用赋值的方法改变对None的引用
- 除非是和None比较,否则和任何东西比较都会返回 False
Python 基础