None对象的特殊性
1 None是什么?
- 与C和JAVA不同,python中是没有
NULL
的,取而代之的是None
。 None
是一个特殊的常量,表示变量没有指向任何对象。- 在Python中,
None
本身实际上也是对象,有自己的类型NoneType
。 - 你可以将
None
赋值给任何变量,但我们不能创建NoneType
类型的对象
obj = None
obj2 = None
print(type(None))
print(id(None))
print(id(obj))
print(id(obj2))
执行结果:
<class 'NoneType'>
140717958924280
140717958924280
140717958924280
⚠️None不是False,None不是0,None不是空字符串。None和任何其他的数据类型比较永远返回False。
2 None和其他类型的比较
- None和其他任何类型比较都会返回False
a = None
if a is None and a==None:
print("a是None") #会执行
if a==False or a==0:
print("None不等于False") #不会被打印
空列表、空字符串、0之间的比较
- if语句判断时,空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False
a=[];b=();c={};d="";e=0;f=None
if (not a) and (not b) and (not c) and (not d) and (not e) and (not f):
print("if判断时,空列表[]、空字符串、0、None等代表空和无的对象会被转换成False")
==
和is
判断时,空列表、空字符串不会自动转成False
a=[];b=();c={};d="";e=0;
if (a==False or d==False):
print("==时,空列表、空字符串不是False!") #不会执行
if(e==False):
print("==时,0会转成False")