Not And Or 的练习提问
来源:6-3 表达式优先级练习

Lemonster
2018-07-19
>>> x=2
>>> n=[ ]
>>> (x>5 or n.append('x<5')) and n.append('x>5')
>>> print(n)
>>> ['x<5']
为什么可以这样添加列表?为什么不能这样添加字典?希望老师解释一下前者能添加的原理?还有后者不能添加的原因。谢谢老师
写回答
1回答
-
demo_up
2018-07-25
从最外层开始看,用A、B、C替换掉三个表达式:
(A or B and C)
or和and优先级相同,程序从左向右执行,即等价于:
((A or B)and C)
运行顺序理清后,开始执行代码
步骤一(A or B)结果为 true:
① x > 5 结果为 false
② n.append('x<5') 结果为 true (此时已为n赋值)
步骤二( true and C):
根据and的运算特性,已经拿到true就不再继续运算,故C无需执行,直接返回结果
综上两个append只有前面的运行了一次,所以print(n)结果为 ['x<5']
022018-07-26
相似问题