python3.x - Python not 运算符的问题
问题描述
>>> a = False + 55
>>> a = not(1) + 5False
如上,将 False 直接进行运算时会作为 0 来计算。使用逻辑运算符 not 时,not(1) 的值为 False 或 0。
但为什么直接将 not(1) 放进算术运算后再次计算的结果为 False?这和 Python 的算法逻辑有关么?
问题解答
回答1:因为not不是一个函数, 是一个表达式, 不管你not(1)+5 还是 not (1+5), 它的作用也只是将后面的结果取反而已.例如:
>>> not 1 + 2False>>> not (1 + 2)False>>> not (1 + 2) + 1False>>> (not (1 + 2)) + 11回答2:
Python 中 not 运算符的用法Boolean Operations:
not x
if x is false, then True, else False
此外,+运算符的优先级(precedence)高于not运算符,所以not(1) + 5中先计算(1) + 5, 后面的(1)+5作为not运算符的操作数. 举个例子可以看到:
not(-1) # Falsenot(-1) + 1 # True回答3:
正如上面所说,因为 not operator 的优先级小于 + 所以 not(1)+6 会被翻译为 not (1)+5关于这些情况,你完全可以通过 dis模块 来查看具体的过程。>>> import dis>>> dis.dis('a = False + 5') 1 0 LOAD_CONST 3 (5) 3 STORE_NAME 0 (a) 6 LOAD_CONST 2 (None) 9 RETURN_VALUE>>> dis.dis('a = not(1) + 5') 1 0 LOAD_CONST 3 (6) 3 UNARY_NOT 4 STORE_NAME 0 (a) 7 LOAD_CONST 2 (None) 10 RETURN_VALUE
相关文章:
1. javascript - 初学angularJS+express,路由路径中/转换成%2F,导致路径失效,求原因?2. html - 急求,能否用flex或者高端点的CSS来布局这个图呢?不想用浮动或定位了3. PHP类中的$this4. boot2docker无法启动5. javascript - 关于jsp中嵌入js代码的问题6. javascript - 百度坐标,返回目标附近有哪些坐标7. html5 - 只用CSS如何实现input框的宽度随框里输入的内容长短自动适应?8. javascript - 前端如何实现这种美图秀秀效果9. python - 抓取天猫详情页里面的月销量,反爬非常厉害10. Python操作sqlserver是异步的吗?

网公网安备