Maison > Questions et réponses > le corps du texte
>>> a = False + 5
5
>>> a = not(1) + 5
False
Comme ci-dessus, will False
直接进行运算时会作为 0
来计算。
使用逻辑运算符 not
时,not(1)
的值为 False
或 0
.
Mais pourquoi ajouter directement not(1)
放进算术运算后再次计算的结果为 False
?
Est-ce lié à la logique algorithmique de Python ?
怪我咯2017-06-22 11:54:39
Parce quenot
不是一个函数
, 是一个表达式
, 不管你not(1)+5
还是 not (1+5)
, sa fonction est simplement d'inverser le résultat suivant.
Par exemple :
>>> not 1 + 2
False
>>> not (1 + 2)
False
>>> not (1 + 2) + 1
False
>>> (not (1 + 2)) + 1
1
漂亮男人2017-06-22 11:54:39
Utilisation de l'opérateur not
dans les opérations booléennes Python :
pas x
si x est faux, alors Vrai, sinon Faux
De plus, la priorité de l'opérateur +
est supérieure à celle de l'opérateur +
运算符的优先级(precedence)高于not
运算符,所以not(1) + 5
中先计算(1) + 5
, 后面的(1)+5
作为not
, donc (1) + 5 est calculé en premier dans
not(1) + 5 code>
, le (1)+5
suivant sert d'opérande de l'opérateur
not(-1) # False
not(-1) + 1 # True
天蓬老师2017-06-22 11:54:39
正如上面所说,因为 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