成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python3.x - Python not 運(yùn)算符的問(wèn)題

瀏覽:151日期:2022-06-27 17:43:20

問(wèn)題描述

>>> a = False + 55

>>> a = not(1) + 5False

如上,將 False 直接進(jìn)行運(yùn)算時(shí)會(huì)作為 0 來(lái)計(jì)算。使用邏輯運(yùn)算符 not 時(shí),not(1) 的值為 False 或 0。

但為什么直接將 not(1) 放進(jìn)算術(shù)運(yùn)算后再次計(jì)算的結(jié)果為 False?這和 Python 的算法邏輯有關(guān)么?

問(wèn)題解答

回答1:

因?yàn)閚ot不是一個(gè)函數(shù), 是一個(gè)表達(dá)式, 不管你not(1)+5 還是 not (1+5), 它的作用也只是將后面的結(jié)果取反而已.例如:

>>> not 1 + 2False>>> not (1 + 2)False>>> not (1 + 2) + 1False>>> (not (1 + 2)) + 11回答2:

Python 中 not 運(yùn)算符的用法Boolean Operations:

not x

if x is false, then True, else False

此外,+運(yùn)算符的優(yōu)先級(jí)(precedence)高于not運(yùn)算符,所以not(1) + 5中先計(jì)算(1) + 5, 后面的(1)+5作為not運(yùn)算符的操作數(shù). 舉個(gè)例子可以看到:

not(-1) # Falsenot(-1) + 1 # True回答3:

正如上面所說(shuō),因?yàn)?not operator 的優(yōu)先級(jí)小于 + 所以 not(1)+6 會(huì)被翻譯為 not (1)+5關(guān)于這些情況,你完全可以通過(guò) dis模塊 來(lái)查看具體的過(guò)程。>>> 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

標(biāo)簽: Python 編程
相關(guān)文章: