赞
踩
None是python中的一个特殊的常量,表示一个空的对象,空值是python中的一个特殊值。数据为空并不代表是空对象,例如[],''等都不是None。None和任何对象比较返回值都是False,除了自己。
- >>> L=[]
- >>> L is None
- False
- >>> L=''
- >>> L is None
- False
None有自己的数据类型NontType,你可以将None赋值给任意对象,但是不能创建一个NoneType对象。
- >>> type(None)
- <class 'NoneType'>
- >>> n=NoneType()
- Traceback (most recent call last):
- File "<input>", line 1, in <module>
- NameError: name 'NoneType' is not defined
需要注意一点:
- >>> a=False
- >>> not a
- True
python中数据为空的对象在判断时的结果都为False,其中None,False,0,[],"",{},()都相当于False,即not None == not False == not '' == not 0 == not [] == not {} == not ()
。
is表示的是对象标识符,用来检查对象的标识符是否一致,即两个对象在内存中的地址是否一致。在使用 a is b
的时候,相当于id(a)==id(b)
。
==表示两个对象是否相等,相当于调用__eq__()
方法,即'a==b' ==> a.__eq__(b)
。
因为None在Python里是个单例对象,一个变量如果是None,它一定和None指向同一个内存地址。
- >>> a=None
- >>> b=None
- >>> id(a)==id(b)
- True
is None是判断两个对象在内存中的地址是否一致,== None背后调用的是eq,而eq可以被重载,下面是一个 is not None但 == None的例子:
- >>> class test():
- ... def __eq__(self,other):
- ... return True
- ...
- >>> t=test()
- >>> t is None
- False
- >>> t == None
- True
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。