a=34a > 10 and print('hello')a < 10 and print('hello world')
a >10 or print('你好')a <10 or print('你好世界')
输出:hello你好世界
为什么输出是这样的?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
大家都快乐,幸福,富足,一切都好
and 的特性是只有两侧的条件都是 True,才能确定表达式的值为 True,否则,如果其中有一个是 False,那么,就可以断定表达式的值为 False。a = 34对于
a > 10 and print('hello')
and 左侧 a > 10 的值为 True,整个表达式的值并不能因此而被确定,因为,整个表达式的值,完全取决于右侧的值,还需要继续测试右侧的值,所以,print('hello') 被执行。对于
a < 10 and print('hello world')
and 左侧 a < 10 的值是 False,不用再测试右侧的表达式,已经足以把整个表达式的值锁定在 False 上了,所以,print('hello world') 没有被执行;
or 的特性是两侧的条件中,只要有一个是 True,整个表达式的值就是 True。 对于
a > 10 or print('你好')
or 左侧条件 a > 10 的值是 True,那么,不需要再测试右侧的条件,整个表达式的值已经被锁定为 True,所以,print('你好') 没有被执行。 对于
a < 10 or print('你好世界')
or 左侧 a < 10 的值为 False,整个表达式的值并不能因此被确定,还需要继续测试 or 右侧的条件,因为,or 右侧的值可以决定整个表达式的值,所以,print('你好世界') 被执行。