7.2 Koje operacije imaju proritet?
Vežbaj, vežbaj... Kao da sam neki bodi-bilder....
Pa i jesi, ali bih to više nazvao „brain builder“....
Ali, hajde da se osvrnemo na još jednu važnu temu, a to je – koja matematička operacija ima prioritet? Ili, još bolje pitanje: kakva je hijerarhija izvršavanja komandi u Pythonu? Ako se komande nađu u istom redu, kako ćemo znati šta Python radi prvo, a šta drugo?
Hajde da se vratimo tvom poznavanju matematike....
Ako za zadatak imalš da izračunaš vrednost izraza, na primer 24 + 2 * 3 , da li ćeš prvo sabrati 24 + 2 ili ćeš prvo izvršiti množenje 2 * 3?
Idi begaj! Pa to je lako, pošto čitamo sa leva na desno, znači da ćemo prvo sabrati 24 + 2. Narodi koji čitaju suprotno , će prvo pomnožiti 2 * 3, što je pogrešno!
Bravo za tvog nastavnika matematike!
Ukoliko si makar takao svoju knjigu iz matematike, koju si koristio u nekom od viših razreda u svojoj Osnovnoj školi, znao bi da se uvek prvo radi množenje. To znači da operacija množenja ima veći prioritet od operatora sabiranja.
Budući da se stvari komplikuju kada u celu priču ubacimo stepenovanje, sinuse, kosinuse, neki put ni u matematici nije lako odrediti šta ide prvo (pogotovo kada čitaš zadatak nekoga ko „piše nogama“). A kako li je tek u Pythonu? Već smo upoznali neke funkcije, komande, a, pretpostavljaš i sam, ima mnogo, mnogo više stvari?
Eh, zato, da se ne bi smo gubili kako-šta, postoji tabela koja predstavlja prvenstvo izvršavanja operacija u Python-u, od najnižeg prioriteta (najkasnije se izvršava - poslednja) do najvišeg prioriteta (najranije se izvršava - prva). To znači, da će u datoj liniji, Python prvo izvršavati operacije koje se nalaze niže u priloženoj tabeli.
Sledeća tabela preuzeta je sa sajta Python reference manual, ovde je napomenuta za tvoju informaciju, jer postoji i pametniji način od pamćenja prvenstva izvršavanja operacija – i to: korišćenje zagrada za grupisanje operacija na željeni način. Ako koristimo zagrade, mi direktno imamo kontrolu nad redosledom izvršavanja operacija, a sem toga, ako grupišemo operacije u zagrade učinićemo da naš program bude lakše čitljiv, kako nama, tako i nekome trećem, ko je zainteresovan. Više o tome malko kasnije.
I još jedna kratka napomena, pola stvari u ovoj tabeli ti je u ovom trenutku nepoznato. Neka ti to ne bude neki mambo-džambo, nego shvati to kao mali plamen sveće koji treba da ti osvetli celu prostoriju.
Operacija
|
Opis
|
lambda
|
Funkcija lambda
|
if - else
|
Operacija grananja
|
or
|
Bulovo ILI
|
and
|
Bulovo I
|
not x
|
Bulovo NE
|
in,
not in, is, is
not, <, <=,
>, >=, !=,
==
|
Komparatori, testovi pripadnosti, testovi
„identiteta“
|
|
|
Logičko ILI nad bitovima brojeva
|
^
|
Logička operacija XOR nad bitovima brojeva
|
&
|
Logičko I nad bitovima brojeva
|
<<, >>
|
Pomeranje bitova broja
|
+, -
|
Sabiranje i oduzimanje
|
*, /, //, %
|
Množenje, deljenje, celobrojno deljenje, ostatak
deljenja
|
+x, -x, ~x
|
Pozitivan, negativan broj, logička inverzija
bitova broja
|
**
|
Stepenovanje
|
x[indeks],
x[indeks:indeks], x(argumenti...),
x.atribut
|
Subskripcija, isecanje, pozivanje funkcije,
referenca atributa objekta
|
(operacije...),
[operacije...], {ključ:
vrednost...}, {operacije...}
|
Kreiranje/prikaz: tuple, liste, rečnika i skupa
|
Operacije koje imaju isto prvenstvo su navedeni u istom redu u gornjoj tabeli. Na primer, + i - imaju istu prednost prilikom izvršavanja.
7.1.1 Prečice za matematičke operacije |
Indeks | 7.3 Promena redosleda izvršavanja operacija |
0 Коментари
Pokažite nam šta mislite o ovome!