|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
我的疑问是这道题目里,优先级高的运算符真的是先做了相应的运算吗?
按照小甲鱼给的答案:
我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
== 0 or 0 or 4 or 6 or 9
== 4
看起来是优先级高的运算符先做了相应的运算
但是按照下面这段代码以及输出来看,并不是优先级高的运算符先运算了
是因为短路逻辑打破了优先级吗?
- def a():
- print('A')
- return 0
- def b():
- print('B')
- return 4
- def c():
- print('C')
- return 3
- def d():
- print('D')
- return 2
- def e():
- print('E')
- return 0
- a() or not(b()) or c() or d() and e()
复制代码
(我的这个问题不影响课后练习的答案,只是好奇代码的运行逻辑)
确实是的
- def a():
- print('A')
- return 0
- def b():
- print('B')
- return 4
- def c():
- print('C')
- return 3
- def d():
- print('D')
- return 2
- def e():
- print('E')
- return 0
- a() or not b() or c() or d() and e()
- # == 0 or not 4 or 3 or d() and e()
- # == 0 or 0 or 3 or d() and e()
- # == 3
- # 不管 d() 和 e() 的值
复制代码
|
|