为了账号安全,请及时绑定邮箱和手机立即绑定

这符合短路计算吗

a='python' b='' print 'hello',b or a   print'hello',b or a and 'world' 为何第一个输出a第二个不是短路而是输出'world'呢。a是字符串类型不是布尔类型吧

正在回答

2 回答

字符串类型参与逻辑运算,只要字符串不为'',那么转换为True。

b or a 为真,and 后面要继续判断,直到'world'为真,才能确定整个逻辑表达式为真,所以没毛病啊

0 回复 有任何疑惑可以回复我~

我只给你解释第二个print,你这么想,b or a的结果先看b,很显然b为空,所以是false;因此b or a的结果就看a了,如果a是false,那结果就是false,如果a是除了“”、0、none之外的值,那这部分逻辑表达式的值都是a的值,因此b or a的结果很显然是'python';然后再考虑a and 'world',即是考虑'python' and 'world'的值,首先‘python’不是false,那么结果就看‘world’了,所以最后的结果是'world'。

完毕!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758620    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

这符合短路计算吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信