为什么'if not None'返回True?
我无法理解这一点
我试过了:
if not None:
print('True')
为什么它打印真实? 不是None
类型应该是None
吗?
在Python中, None
是单身人士。 它在其他语言中被称为null
。
if not None:
,那么编译器假定不是None表示非空或非零,并且我们知道if语句将非零值评估为True
并执行它们。
功能示例:
1) if not None:
在test()中输出参数x
def test(x):
if not None:
print(x)
>>> test(2)
2
2) if 1:
在test()中打印参数x
def test(x):
if 1:
print(x)
>>> test(2)
2
3) if -1:
在test()中打印参数x
def test(x):
if -1:
print(x)
>>> test(2)
2
4) if 0:
不在test()中打印参数x
def test(x):
if 0:
print(x)
>>> test(2)
5) if True:
在test()中输出参数x
def test(x):
if True:
print(x)
>>> test(2)
2
所有的 Python对象都有一个真值,请参阅真值测试。 这包括None
,它在布尔上下文中被认为是错误的。
另外, not
操作符必须总是产生布尔结果,不管是True
还是False
。 如果not None
产生False
,那么当bool(None)
已经产生False
时这会令人惊讶。
None
值是一个哨兵对象,一个信号值。 您仍然需要能够测试该对象,并且它具有布尔值是非常有帮助的。 举个例子:
if function_that_returns_value_or_None():
如果None
没有布尔值,则该测试会中断。
Python文档
4.1。 真值测试
任何对象都可以测试真值,用于if或while条件或者作为下面布尔运算的操作数。 以下值被认为是错误的:
没有
假
任何数字类型为零,例如0,0.0,0j。
任何空序列,例如'',(),[]。
任何空的映射,例如{}。
如果该类定义了bool ()或len ()方法,则该方法返回整数零或布尔值False时,用户定义类的实例。
链接地址: http://www.djcxy.com/p/76625.html