python - Python“不为真”与“为假”相同吗?
问题描述
我很好奇 Python 中“x is not True”的优先级。起初,我认为它的意思是“!= True”,但后来我认为“not True”肯定比“is not”具有更高的优先级。然而,以下似乎表明后者:
>>> 4 is not True
True
>>> not True
False
>>> 4 is False
False
>>> 4 is (not True)
False
似乎 Python 将“is not True”解释为单个表达式,而不是“is (not True)”,后者等同于“is False”。
我对 Python 编程并不陌生,但我之前没有深入思考过这个问题。我可以安全地假设“不是”本身就是一个具有比“非真”更高的解析优先级的运算符吗?
解决方案
不,不是。对于不是单例对象的任何值x is not True
都将为真x
True
似乎 Python 将“is not True”解释为单个表达式,而不是“is (not True)”,后者等同于“is False”。
恰恰。在反汇编的字节码中其实可以看到这个,is not
是它自己的比较操作
>>> import dis
>>> dis.dis("x is not True")
1 0 LOAD_NAME 0 (x)
2 LOAD_CONST 0 (True)
4 COMPARE_OP 9 (is not)
6 RETURN_VALUE
>>>
推荐阅读
- ios - 我无法在 iOS Safari 上访问 facebook 测试用户的个人资料
- spring-boot - Spring Boot Logback - 模式定制
- distribution - Anylogic - 具有汇总值的自定义分布?
- python - 具有排序的浮点索引的数据框中两列之间的值距离
- javascript - 尝试将 eventListener 添加到组件,但它破坏了我的应用程序
- javascript - 缩放时重新缩放轴
- javascript - IE 11 'ng' 未定义错误
- c++ - CLion 如何终止正在运行的进程?
- android - Intent 和 lambda 并且需要在每次运行之前进行清理
- java - Spring Logging 被添加到 System.out 但不是文件(log4j)