橘猫啊啊 发表于 2020-6-3 23:17:24

疑问贴

>>>1 and 3
3
>>>0 and 1
0
为什么这两个代码输出的值是这个呢,and 可以理解成数学里面 ‘且’ 的意思吗?如果不可以,应该怎么理解呢?

Twilight6 发表于 2020-6-3 23:21:21

本帖最后由 Twilight6 于 2020-6-3 23:23 编辑

这涉及短路逻辑
短路逻辑规则如下:
表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。若 or 的左侧逻辑值为 False ,则输出or右侧的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。若 and 的左侧逻辑值为 True,则输出其后的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

Twilight6 发表于 2020-6-3 23:25:09

简单来说and 如果都为 True则返回最 后一个 即最右边的值

如果 and 有个为 False 则返回 False 处的值

橘猫啊啊 发表于 2020-6-3 23:26:02

是你嘿嘿,感谢感谢

sunrise085 发表于 2020-6-3 23:26:30

and连接的多个表达式(你这里是两个表达式), 从左向右逐个计算,遇到假值(0False""   []   {}等)或全部计算完则停止计算,其返回值是最后计算的一个表达式的值。
1 and 3第一个表达式是 1,为真,然后计算第二个表达式,为3也为真,最后返回第二个表达式的值3
0 and 1 第一个表达式是0为假,结束计算,返回第一个表达式是值0

Twilight6 发表于 2020-6-3 23:28:01

橘猫啊啊 发表于 2020-6-3 23:26
是你嘿嘿,感谢感谢

{:10_297:}加油~

橘猫啊啊 发表于 2020-6-3 23:32:11

sunrise085 发表于 2020-6-3 23:26
and连接的多个表达式(你这里是两个表达式), 从左向右逐个计算,遇到假值(0False""   []   {}等)或 ...

感谢感谢{:5_92:}

小甲鱼的铁粉 发表于 2020-6-4 08:22:07

Twilight6 发表于 2020-6-3 23:21
这涉及短路逻辑

{:10_305:}
页: [1]
查看完整版本: 疑问贴