python - 某些条件的评估与 Python 中的预期不同
问题描述
目前正在创建一个在数组中获取给定值并添加 32 的片段
我的 IDE (PyCharm) 建议我通过执行以下操作删除代码中的冗余
if ascii_key[i] >= 65 and ascii_key[i] <= 90:
ascii_key[i] = ascii_key[i] + 32
至
if 65 <= ascii_key[i] <= 90:
ascii_key[i] = ascii_key[i] + 32
两种解决方案都对我有用,但我很好奇为什么这种条件安排会中断
if ascii_key[i] <= 65 >= 90:
ascii_key[i] = ascii_key[i] + 32
如果方便的话,我会很感激伪代码的解释,我还是有点新手
解决方案
在您提供的第三个代码中。
ascii_key[i] <= 65 >= 90
这总是被评估为False
。
ascii_key[i] <= 65 >= 90
被评估为ascii_key[i] <= 65 and 65 >= 90
。65>=90
是False
。
的字节码评估a<b<c
。
In [17]: dis.dis('a<b<c')
1 0 LOAD_NAME 0 (a)
2 LOAD_NAME 1 (b)
4 DUP_TOP
6 ROT_THREE
8 COMPARE_OP 0 (<)
10 JUMP_IF_FALSE_OR_POP 18
12 LOAD_NAME 2 (c)
14 COMPARE_OP 0 (<)
16 RETURN_VALUE
>> 18 ROT_TWO
20 POP_TOP
22 RETURN_VALUE
的字节码评估a<b and b<c
。
In [18]: dis.dis('a<b and b<c')
1 0 LOAD_NAME 0 (a)
2 LOAD_NAME 1 (b)
4 COMPARE_OP 0 (<)
6 JUMP_IF_FALSE_OR_POP 14
8 LOAD_NAME 1 (b)
10 LOAD_NAME 2 (c)
12 COMPARE_OP 0 (<)
>> 14 RETURN_VALUE
你可以观察到 观察a<b<c
等价于a<b and b<c
。