Python運(yùn)算符優(yōu)先級,是描述在計算機(jī)運(yùn)算計算表達(dá)式時執(zhí)行運(yùn)算的先后順序。 先執(zhí)行具有較高優(yōu)先級的運(yùn)算,然后執(zhí)行較低優(yōu)先級的運(yùn)算。 例如,我們常說的先執(zhí)行相乘和除,再執(zhí)行加減運(yùn)算。
下表從高到低列出了運(yùn)算符的優(yōu)先級。同一行中的運(yùn)算符具有相同優(yōu)先級,然后運(yùn)算符的優(yōu)先級是運(yùn)算表達(dá)式從左到右。
優(yōu)先級 | 運(yùn)算符 | 描述 |
---|---|---|
1 | lambda | Lambda表達(dá)式 |
2 | or | 布爾“或” |
3 | and | 布爾“與” |
4 | not x | 布爾“非” |
5 | in,not in | 成員測試 |
6 | is,is not | 同一性測試 |
7 | <,<=,>,>=,!=,== | 比較 |
8 | | | 按位或 |
9 | ^ | 按位異或 |
10 | & | 按位與 |
11 | <<,>> | 移位 |
12 | +,- | 加法與減法 |
13 | *,/,% | 乘法、除法與取余 |
14 | +x,-x | 正負(fù)號 |
15 | ~x | 按位翻轉(zhuǎn) |
16 | ** | 指數(shù) |
17 | x.attribute | 屬性參考 |
18 | x[index] | 下標(biāo) |
19 | x[index:index] | 尋址段 |
20 | f(arguments...) | 函數(shù)調(diào)用 |
21 | (experession,...) | 綁定或元組顯示 |
22 | [expression,...] | 列表顯示 |
23 | {key:datum,...} | 字典顯示 |
24 | 'expression,...' | 字符串轉(zhuǎn)換 |
一般情況下,運(yùn)算符優(yōu)先級表決定了哪個運(yùn)算符在別的運(yùn)算符之前計算。但是,如果你想要改變它們默認(rèn)計算順序,你得使用圓括號。例如,你想要在一個表達(dá)式中讓加法在乘法之前計算,那么你就得寫成類似(10 + 55) * 13的樣子。
Python運(yùn)算符通常由左向右結(jié)合,即具有相同優(yōu)先級的運(yùn)算符按照從左向右的順序計算。例如,2 + 3 + 4被計算成(2 + 3) + 4。一些如賦值運(yùn)算符那樣的運(yùn)算符是由右向左結(jié)合的,即a = b = c被處理為a = (b = c)。
在一個表達(dá)式中可能包含多個有不同運(yùn)算符連接起來的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對象;由于表達(dá)式有多種運(yùn)算,不同的運(yùn)算順序可能得出不同結(jié)果甚至出現(xiàn)錯誤運(yùn)算錯誤,因?yàn)楫?dāng)表達(dá)式中含多種運(yùn)算時,必須按一定順序進(jìn)行結(jié)合,才能保證運(yùn)算的合理性和結(jié)果的正確性、唯一性。優(yōu)先級從上到下依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級。表達(dá)式的結(jié)合次序取決于表達(dá)式中各種運(yùn)算符的優(yōu)先級。優(yōu)先級高的運(yùn)算符先結(jié)合,優(yōu)先級低的運(yùn)算符后結(jié)合,同一行中的運(yùn)算符的優(yōu)先級相同。
# coding=utf-8 #優(yōu)先級的簡單實(shí)例 priorityNumber=2+1*4 print priorityNumber #輸出結(jié)果:6 #優(yōu)先級使用實(shí)例 #以下優(yōu)先級排名從高到低,在同一運(yùn)算中,先執(zhí)行優(yōu)先級高的再執(zhí)行低的,以此類推。 #Top 1:函數(shù)調(diào)用、尋址、下標(biāo) #Top 2:冪運(yùn)算** priorityNumber=2*2**3 print priorityNumber #輸出結(jié)果:16 #Top 3:翻轉(zhuǎn)運(yùn)算~ #Top 4:正負(fù)號 print 1+2*-3 #輸出結(jié)果:-5 #Top 5:*、/、% print 2+1*2/5 #輸出結(jié)果:2 #Top 6:+、- print 3<<2+1 #輸出結(jié)果:24 #Top 7:<<、>> #Top 8:按位&、^、| #Top 9:比較運(yùn)算符 priority=2*3+2<=2+1*7 print priority #輸出結(jié)果:True #Top 10:邏輯的not and or #Top 11:lambda表達(dá)式 2.python運(yùn)算符優(yōu)先級使用規(guī)律: #python優(yōu)先級使用規(guī)律 #1、一般情況下是左結(jié)合的 #ps:在沒有更高優(yōu)先級運(yùn)算符,即只有同級運(yùn)算符時時從左到右結(jié)合 print 1+2+3*5+5 #輸出結(jié)果:23 #2、出現(xiàn)賦值的時候一般是右結(jié)合 #ps:在有賦值運(yùn)算符時,是右結(jié)合,即先算出1+2的值以后再賦值給priority priority=1+2 print priority #輸出結(jié)果:23
大家可能會覺得Python運(yùn)算符的優(yōu)先級不容易記憶,而且有時候還容易混淆。在實(shí)際運(yùn)用中根據(jù)業(yè)務(wù)邏輯可能我們知道要先做什么再做什么,但是卻忘記Python運(yùn)算符的優(yōu)先級了,該怎么辦?這里教大家一個殺手锏,絕對百試不爽。
#python運(yùn)算符優(yōu)先級大招 '''比如說有這個需求: 去商店買水,買3瓶水,每瓶5塊,再買一個綠箭(假設(shè)綠箭3塊),總共多少錢? 這個簡單的應(yīng)用非常明顯,需要先用乘法再用加法,如果這里你忘記了乘法和加法的優(yōu)先級,可以這樣: ''' print (3*5)+3 #輸出結(jié)果:18 #ps: 這只是一個簡單的例子,只是為了告訴大家實(shí)際應(yīng)用中實(shí)在不行咱就放大招。有備無患。 Python表達(dá)式 Python表達(dá)式基本概念: python中,值、變量和運(yùn)算符共同組成的整體稱為表達(dá)式 #python表達(dá)式 #1 字符串表達(dá)式 "Hello" #2 計算表達(dá)式 2+3 #3 賦值表達(dá)式 first=0 #4 變量表達(dá)式 first #5 值表達(dá)式 #等等
所以在我們非常清楚Python運(yùn)算優(yōu)先級的前提下,最好運(yùn)算符的書寫的時候,還是要以圓括號來標(biāo)記優(yōu)先級,這樣可讀性強(qiáng),也是一個良好的編程習(xí)慣。
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流①群][收費(fèi)]
綜合技術(shù)交流:點(diǎn)擊加入--> [SO JSON官方交流②群][免費(fèi)]
要求:不能發(fā)廣告、暴力、政治、付費(fèi)教程,違者直接踢出。
備注:入群費(fèi)用5元,沒有QQ錢包,可以先支付寶
or 微信
掃碼支付5元贊助后,我拉您進(jìn)去。QQ聯(lián)系我。
掃碼贊助:贊助二維碼。
技術(shù)交流QQ群:①群259217951,②群166848545
站長郵箱:so@sojson.com
對頁面內(nèi)容有任何疑問和建議,請聯(lián)系我們。
所有贊助/開支都講公開明細(xì),用于網(wǎng)站維護(hù):贊助名單查看
正在加載... ...