知白守黑. 发表于 2022-2-5 22:10:11

python问题

在逻辑操作符的运算过程中
为什么
0 or False输出得False
False or 0输出得0
在这个里面False相当于0,那如果写成这样:
0 or False输出得0
False or 0输出得False
是对的吗?


布尔类型的True和False能当作整数1和0对待,意义相同,那运算结果中,两者的写法是不是可以互相随意变换。

isdkz 发表于 2022-2-5 22:36:42

本帖最后由 isdkz 于 2022-2-5 22:48 编辑

非零即True,零即False

and:左边的表达式的值为False时(即一个为零的值),and逻辑运算表达式的值就是它左边的表达式的值,因为与运算一假则假,自然不用再看右边的表达式了,否则and运算就是右边表达式的值
同理,or:    左边的表达式的值为True时(即一个非零的值),or逻辑运算表达式的值就是它左边的表达式的值,因为或运算一真则真,否则or运算就是右边表达式的值

这是and 和 or 的短路机制
and 和 or 运算的结果是看它两边的表达式的值的

所以并不是说运算时结果是可以随意变换的,逻辑运算的结果是根据短路机制的

因为bool类是int类的子类,可以用 issubclass(bool, int) 来查看
所以也就在数学运算中bool类和其它数据类型进行数学运算时会自动类型上升为它的父类int类
所以自然可以把bool类型当做0和1代入数学运算中

傻眼貓咪 发表于 2022-2-5 22:36:48

布尔值一般用于执行 if、for、while 条件语句。不要太执着于形式到底该是 False 还是 0,没有意义。主要是看你要用作什么,用在哪里,以下为例子。

例子:
0 可以当作 False
0.0000 可以当作 False
[] 可以当作 False(空列表)
None 可以当作 False

1 可以当作 True
13 可以当作 True
3.145 可以当作 True
可以当作 True
页: [1]
查看完整版本: python问题