python3.x - Masalah dengan Python bukan operator
phpcn_u1582
phpcn_u1582 2017-06-22 11:52:39
0
3
1288
>>> a = False + 5
5
>>> a = not(1) + 5
False

Seperti di atas, akan False 直接进行运算时会作为 0 来计算。
使用逻辑运算符 not 时,not(1) 的值为 False0.

Tetapi kenapa terus tambah not(1) 放进算术运算后再次计算的结果为 False?
Adakah ini berkaitan dengan logik algoritma Python?

phpcn_u1582
phpcn_u1582

membalas semua(3)
刘奇

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
漂亮男人

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

Sebagai contoh, anda boleh melihat: 🎜
not(-1)      # False
not(-1) + 1  # True
Peter_Zhu
正如上面所说,因为 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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan