Rozdział 5 · Pobawmy się liczbami!
Kolejność przypisania i obliczeń
Krótszy wpis o zmiennych – oraz pełna mapa tego, co pojawia się najpierw, a co później.
Operacje przydziałowe
Zmiana zmiennej „opartej na samej sobie” score = score + 10 możliwe, ale
Python oferuje krótszy wpis:
prisvaivanie.py
score = 0
score += 10 # to samo, co score = score + 10
print(score) # 10
score -= 3 # score = score - 3
print(score) # 7
To tworzy NOWY obiekt, a nie zmienia stary
Jak dowiedzieliśmy się w rozdziałach 3 i 4, liczby w Python są niezmienne.
score += 10 nie „dodaje” 0 — Python oblicza score + 10, tworzy nowy obiekt 10 i ponownie wiąże nazwę score do tego. Na zewnątrz wygląda to na zmianę, ale w środku to dokładnie ten sam mechanizm, który widzieliśmy w rozdziale 4 age = age + 1.Takie skróty istnieją dla wszystkich głównych operatorów:
| Skrócone nagranie | Pełne nagranie |
|---|---|
x += n | x = x + n |
x -= n | x = x - n |
x *= n | x = x * n |
x /= n | x = x / n |
x //= n | x = x // n |
x %= n | x = x % n |
x **= n | x = x ** n |
Co jest pierwsze?
Już widzieliśmy kawałki tego obrazu osobno — teraz zbierzemy pełną mapę priorytetu operatorów rozdziału 5, od najwyższego do najniższego:
()
nawiasy zawsze są pierwsze
**
potęgowanie
+x -x
operator jednoargumentowy plus/minus
* / // %
mnożenie, dzielenie, dzielenie całkowite, reszta
+ -
dodatku, odejmowanie
poryadok.py
print(2 + 3 * 4) #14 - Najpierw 3 * 4 = 12, potem + 2
print((2 + 3) * 4) # 20 — nawiasy zmieniają kolejność
Drzewo pokazuje to samo co priorytet: * zainwestowany
głębszy, więc najpierw oblicza się, a jego wynik staje się jednym z operandów
+.
W razie wątpliwości używaj nawiasów
Nawet gdy kolejność jest formalnie jasna, nawiasy sprawiają, że kod jest bardziej uczciwy dla osoby, która go będzie czytać (w tym dla ciebie za sześć miesięcy).
(a + b) * c czyta się szybciej niż trzeba przypominać sobie zasady priorytetu.Praktyka: Przypisanie i kolejność obliczeń
Ten sam laptop co w sekcji Degrees and Roots – porusza ten temat również