2!=True
问题:为什么2!=True呢?
1 | num=2 |
其实也是个无聊的东西…查官方文档时候感觉还不错,至少能看懂…
真值测试
python中的任何对象都有真值,以下对象的真值为false:
- None
- False
- zero of any numeric type,for example 0,0.0,0j.
- any empty sequence,for example,’’,(),[].
- any empty mapping,for example,{}
- instances of user-defined classes, if the class defines a bool() or len() method, when that method returns the integer zero or bool value False.
其它所有对象的真值都被视为 true 。一些返回布尔值的操作和内置函数,总是返回0或者False来表示真值为false,返回1或者True来表示真值为true. (例外: 布尔操作 or 和 and 总是返回其操作数)
布尔操作
python中的布尔操作,有如下规则:
Operations | Result | Notes |
---|---|---|
x or y | if x is false,then y,else x | (1) |
x and y | if x is false,then x,else y | (2) |
not x | if x is false,then True,else False | (3) |
Notes: | ||
(1) This is a short-circuit operator, so it only evaluates the second argument if the first one is false. | ||
只会在第一个参数为假的时候考虑第二个参数. | ||
(2) This is a short-circuit operator, so it only evaluates the second argument if the first one is true. | ||
只会在第一个参数为真的时候考虑第二个参数. | ||
(3) not has a lower priority than non-Boolean operators, so not a == b is interpreted as not (a == b), and a == not b is a syntax error. |
于是有:
1 | True and 0 # 0 |
1 | True or 0 # True |
布尔值
1 | isinstance(True,int) # True |
布尔值包括两个常量对象,分别是True和False,来表示真值;
在数值上下文中,布尔值True和False等同于1和0,例如:5+True,返回6;
内置函数bool()可以将任何值转换为布尔值,前提是该值可以被解释为真值.
结论:2 != True ,但是 bool(2) == True.