Python Language
Operatörens företräde
Sök…
Introduktion
Pythonoperatörer har en bestämd ordningsföljd som bestämmer vilka operatörer som utvärderas först i ett potentiellt tvetydigt uttryck. I uttrycket 3 * 2 + 7 multipliceras till exempel först 3 med 2, och sedan läggs resultatet till 7, vilket ger 13. Uttrycket utvärderas inte tvärtom, eftersom * har en högre prioritet än +.
Nedan finns en lista över operatörer efter företräde, och en kort beskrivning av vad de (vanligtvis) gör.
Anmärkningar
Från Python-dokumentationen:
Följande tabell sammanfattar operatörens föregångar i Python, från lägsta prioritet (minst bindande) till högsta prioritet (mest bindande). Operatörer i samma ruta har samma företräde. Om inte syntaxen uttryckligen anges är operatörer binära. Operatörer i samma ruta grupperar från vänster till höger (med undantag för jämförelser, inklusive tester, som alla har samma företräde och kedja från vänster till höger och exponentiering, som grupperar från höger till vänster).
Operatör | Beskrivning |
---|---|
lambda | Lambda-uttryck |
om annat | Villkorligt uttryck |
eller | Boolean ELLER |
och | Booleska OCH |
inte x | Boolean INTE |
i, inte i, är, är inte, <, <=,>,> =, <>,! =, == | Jämförelser, inklusive medlemstest och identitetstester |
| | Bitvis ELLER |
^ | Bitvis XOR |
& | Bitvis OCH |
<<, >> | Skift |
+, - | Addition och subtraktion |
*, /, //,% | Multiplikation, division, resten [8] |
+ x, -x, ~ x | Positiv, negativ, bitvis INTE |
** | Exponentiation [9] |
x [index], x [index: index], x (argument ...), x.attribute | Prenumeration, skivning, samtal, attributreferens |
(uttryck ...), [uttryck ...], {nyckel: värde ...}, uttryck ... | Bindande eller tuple display, list display, ordbok display, strängkonvertering |
Enkla operatörspredensexempel i python.
Python följer PEMDAS-regeln. PEMDAS står för parenteser, exponenter, multiplikation och division samt addition och subtraktion.
Exempel:
>>> a, b, c, d = 2, 3, 5, 7
>>> a ** (b + c) # parentheses
256
>>> a * b ** c # exponent: same as `a * (b ** c)`
7776
>>> a + b * c / d # multiplication / division: same as `a + (b * c / d)`
4.142857142857142
Extra: matematiska regler gäller, men inte alltid :
>>> 300 / 300 * 200
200.0
>>> 300 * 200 / 300
200.0
>>> 1e300 / 1e300 * 1e200
1e+200
>>> 1e300 * 1e200 / 1e300
inf