Python Language
Priorytet operatora
Szukaj…
Wprowadzenie
Operatory w języku Python mają ustaloną kolejność pierwszeństwa , która określa, którzy operatorzy są oceniani jako pierwsi w potencjalnie niejednoznacznym wyrażeniu. Na przykład w wyrażeniu 3 * 2 + 7 pierwsze 3 jest mnożone przez 2, a następnie wynik jest dodawany do 7, uzyskując 13. Wyrażenie nie jest oceniane na odwrót, ponieważ * ma wyższy priorytet niż +.
Poniżej znajduje się lista operatorów z pierwszeństwem oraz krótki opis tego, co (zwykle) robią.
Uwagi
Z dokumentacji Python:
Poniższa tabela podsumowuje priorytety operatorów w Pythonie, od najniższego priorytetu (najmniejsze wiązanie) do najwyższego priorytetu (najbardziej wiążące). Operatorzy w tym samym polu mają taki sam priorytet. O ile nie podano wyraźnie składni, operatory są binarne. Operatory w tej samej grupie pól od lewej do prawej (z wyjątkiem porównań, w tym testów, które wszystkie mają ten sam priorytet i ciąg od lewej do prawej oraz potęgowanie, które grupują od prawej do lewej).
Operator | Opis |
---|---|
lambda | Wyrażenie lambda |
Jeśli inaczej | Wyrażenie warunkowe |
lub | Boolean OR |
i | Boolean AND |
nie x | Boolean NOT |
in, not in, is, is not, <, <=,>,> =, <>,! =, == | Porównania, w tym testy członkostwa i testy tożsamości |
| | Bitowe OR |
^ | Bitowy XOR |
I | Bitowe AND |
<<, >> | Przesunięcia |
+, - | Dodawanie i odejmowanie |
*, /, //,% | Mnożenie, dzielenie, reszta [8] |
+ x, -x, ~ x | Pozytywne, negatywne, bitowe NIE |
** | Potęgowanie [9] |
x [indeks], x [indeks: indeks], x (argumenty ...), x.attribute | Subskrypcja, krojenie, połączenie, odniesienie do atrybutu |
(wyrażenia ...), [wyrażenia ...], {klucz: wartość ...}, wyrażenia ... | Wyświetlanie powiązań lub krotek, wyświetlanie listy, wyświetlanie słownika, konwersja ciągów |
Proste priorytety operatorów Przykłady w python.
Python przestrzega reguły PEMDAS. PEMDAS oznacza nawiasy, wykładniki, mnożenie i dzielenie oraz dodawanie i odejmowanie.
Przykład:
>>> 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
Dodatki: obowiązują reguły matematyczne, ale nie zawsze :
>>> 300 / 300 * 200
200.0
>>> 300 * 200 / 300
200.0
>>> 1e300 / 1e300 * 1e200
1e+200
>>> 1e300 * 1e200 / 1e300
inf