Rumah > Soal Jawab > teks badan
>>> a = False + 5
5
>>> a = not(1) + 5
False
Seperti di atas, akan False
直接进行运算时会作为 0
来计算。
使用逻辑运算符 not
时,not(1)
的值为 False
或 0
.
Tetapi kenapa terus tambah not(1)
放进算术运算后再次计算的结果为 False
?
Adakah ini berkaitan dengan logik algoritma Python?
怪我咯2017-06-22 11:54:39
Sebabnot
不是一个函数
, 是一个表达式
, 不管你not(1)+5
还是 not (1+5)
, fungsinya hanya untuk menyongsangkan hasil seterusnya.
Contohnya:
>>> not 1 + 2
False
>>> not (1 + 2)
False
>>> not (1 + 2) + 1
False
>>> (not (1 + 2)) + 1
1
漂亮男人2017-06-22 11:54:39
Penggunaan not
operator dalam Python Boolean Operations:
bukan x
jika x salah, maka Benar, jika tidak Salah
Selain itu, keutamaan pengendali +
adalah lebih tinggi daripada operator +
运算符的优先级(precedence)高于not
运算符,所以not(1) + 5
中先计算(1) + 5
, 后面的(1)+5
作为not
, jadi (1) + 5 dikira dahulu dalam
bukan(1) + 5 kod>
, (1)+5
berikut berfungsi sebagai operan operator
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