【编程】Python 空值

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
此条目发表在人工智能, 服务器, 程序开发分类目录,贴了, , , , , , , 标签。将固定链接加入收藏夹。