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