您好,登錄后才能下訂單哦!
這算是一篇《避坑文章》
為什么叫避坑呢,起因是自己掉過很多人挖的坑,比如國內轉來轉去的東西,大多是你抄我我抄你,從最起頭就有問題,抄下去問題或許更多;有些又是因為翻譯的問題,或是因為翻譯造成的理解問題;有些是細節問題,一點點不起眼的地方,就引起最終的錯誤;有些是版本更新的問題。
所以想來想去,有時間的時候就寫寫,希望有人能看到,避免走一些彎路,我的目的就達到了。
(自己挖的坑暫時就不提了。。。)
最近想折騰一下python,就從頭開始看了看,因為這樣一道問題:
if not 1 + 1 == y or x == 4 and 7 == 8:
當然涉及到了pythone運算符的優先級,有點不清楚python的運算優先級,就去查了一下。
結果發現,好幾個地方的內容是這樣的,我粘了一份過來(從高到低):
運算符 | 描述 |
---|---|
** | 指數 (最高優先級) |
~ + - | 按位翻轉, 一元加號和減號 (最后兩個的方法名為 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法減法 |
>> << | 右移,左移運算符 |
& | 位 'AND' |
^ | | 位運算符 |
<= < > >= | 比較運算符 |
<> == != | 等于運算符 |
= %= /= //= -= += *= **= | 賦值運算符 |
is is not | 身份運算符 |
in not in | 成員運算符 |
not and or | 邏輯運算符 |
實際上,官方是這樣的(從低到高):
Operator | Description |
---|---|
lambda | Lambda expression |
if – else | Conditional expression |
or | Boolean OR |
and | Boolean AND |
not x | Boolean NOT |
in , not in , is , is not , < , <= , > , >= , != , == | Comparisons, including membership tests and identity tests |
| | Bitwise OR |
^ | Bitwise XOR |
& | Bitwise AND |
<< , >> | Shifts |
+ , - | Addition and subtraction |
* , @ , / , // , % | Multiplication, matrix multiplication, division, floor division, remainder [5] |
+x , -x , ~x | Positive, negative, bitwise NOT |
** | Exponentiation [6] |
await x | Await expression |
x[index] , x[index:index] , x(arguments...) , x.attribute | Subscription, slicing, call, attribute reference |
(expressions...) , [expressions...] , {key: value...} ,{expressions...} | Binding or tuple display, list display, dictionary display, set display |
來源:
https://docs.python.org/3/reference/expressions.html#operator-precedence
各位看官發現區別沒有?
我第一時間發現的問題就是,與或非這3個運算,前面那個表格在列在同一等級,這明顯與常理不符,所以我才去查了官方資料。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。