为什么'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