在python 有有个神奇的东西,什么样的值可以直接用True 和False 来判断,在if语句中和直接判断有什么区别。
>>> a=2
>>> a is True
False
>>> 2 is True
False
>>> 2 if 2 else 3
2
可以看到,直接用2 isTrue 返回的是False,而在if语句中,则返回的是True.
在python 中,True只和1等价,其他值均为False。
>>> 1 is True
False
>>> 1==True
>>> 3==True
False
>>> [2]==True
但在if 中其实是用bool判断的,在python里面只要是非空或非None,或非0的都为True.
>>> bool([2])
True
>>> bool(0)
False
>>> bool(2)
True
>>> bool(None)
False
>>> bool([])
False
reference:
https://stackoverflow.com/questions/7134984/why-does-1-true-but-2-true-in-python