鱼C论坛

 找回密码
 立即注册
查看: 1620|回复: 4

[已解决]关于短路逻辑

[复制链接]
发表于 2021-3-21 16:29:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么not 1 or 0 返回 0,而0 or not 1 却返回False
最佳答案
2021-3-21 16:47:29
短路逻辑就是当第一个操作数无法对这个式子求值时,才对第二个操作数求值
并且返回关键的值
>>> 1 and 2 #这里1无法知道结果,所以返回2.1就是True.
2
>>> 1 or 2  #or是一个true就可以,那第一个就是true不用计算直接返回
1
>>> not 1   #not 1 返回false
False
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-21 16:47:29 | 显示全部楼层    本楼为最佳答案   
短路逻辑就是当第一个操作数无法对这个式子求值时,才对第二个操作数求值
并且返回关键的值
>>> 1 and 2 #这里1无法知道结果,所以返回2.1就是True.
2
>>> 1 or 2  #or是一个true就可以,那第一个就是true不用计算直接返回
1
>>> not 1   #not 1 返回false
False
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-21 17:48:19 | 显示全部楼层
本帖最后由 jackz007 于 2021-3-21 17:49 编辑

        0 是整型数,False 是布尔值,布尔型是整型的子类,整型数可以直接当成布尔值使用,0 对应于 False,非 0 值对应于 True。所以,就本例而言,两个表达式的逻辑值相等,都是 False。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-21 18:12:41 | 显示全部楼层
只要类定义了魔术方法__bool__,这个类型可以直接当成布尔值使用:直接  【not 对象】【对象 and/or 对象】或【if 对象】【while对象】都可以

而 布尔型是整型的子类  是布尔类型能用整型的方法 。 其体现是 魔术方法定义的加减乘除 如 【>>> True + True #2】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-21 21:18:05 | 显示全部楼层
短路逻辑:是当第一个操作数无法确定瑞吉迅速按的结果时,才对第二个操作数求值。
or   左边或者右边,只要其中一边结果为True,结果为True
     若做左边第一个操作值为真True,左边第一个操作值影响结果,扔出左边结果。
     若做左边第一个操作值为假False,右边第二个操作值影响结果,扔出右边结果。

not 1 or 0 返回 0,而0 or not 1 却返回False

not 1为 false   not 1 or 0 返回右边,所以为0

0 or not 1  同样返回右边结果,因为 not 1 可以等同 False ,所以结果为 False

以上为我个人理解,如果错误请指出,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 08:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表