Za zgled imejmo nekaj spremenljivk: a naj ima vrednost 7.0, b naj bo 3, c naj bo "True" in d naj bo "False"
Matematične in logične operacije so v Pythonu enostavne. V spodnjem programu vidimo nekaj primerov seštevanja, odštevanja, množenja in deljanje, potenciranja, ter nekaj logičnih operacij:
| |
Pri deljenju celih števil bo računalnik rezultat zaokrožil na celo število. Če želimo imeti realno število z decimalkami, mora biti vsaj eden od operandov realno število. Operandi so lahko tudi spremenljivke. Bolj zapletene aritmetične izraze dobimo s pomočjo okroglih oklepajev.
V nadaljevanju je popoln pregled vseh možnih operatorjev. Marsikaterega od njih povprečen uporabnik Pythona ne bo potreboval.
| Operator | Opis | Primer |
|---|---|---|
| + Seštevanje | Sešteje vrednosti operandov na obeh straneh operatorja. | a + b = 10 |
| - Odštevanje | Odšteje desni operand od levega. | a – b = 4 |
| * Množenje | Množi vrednosti na obeh straneh operatorja | a * b = 21 |
| / Delitev | Deli levi operand z desnim | a / b = 2.3333 |
| % Modul | Deli levi operand z desnim in vrne ostanek | a % b = 1 |
| ** Eksponent | Izračuna vrednost levega operanda s potenco desnega | a**b = 343 = (73) |
| // | Floor deljenje: Delitev operandov, kjer je rezultat količnik, v katerem se odstranijo številke za decimalno vejico. Toda če je eden od operandov negativen, je rezultat zaokrožen od ničle (proti negativni neskončnosti): |
9//2 = 4 in 9.0//2.0 = 4.0, -11//3 = -4, -11.0//3 = -4.0 |
Ti operatorji primerjajo vrednosti na obeh straneh operatorja in odločijo relacijo med njima. Pravimo jim tudi relacijski operatorji.
| Operator | Opis | Primer |
|---|---|---|
| == | Če sta vrednosti operandov enaki, je trditev True. | (c == d) ni res (ni True). |
| != | Če sta vrednosti operandov nista enaki, je trditev True. | (a!= b) je True. |
| > | Če je vrednost levega operanda večja od vrednosti desnega, je trditev True. | (a > b) je True. |
| < | Če je vrednost levega operanda manjša od vrednosti desnega, je trditev True. | (a < b) ni True. |
| >= | Če je vrednost levega operanda večja od ali enaka vrednosti desnega, je trditev True. | (b >= a) ni True. |
| <= | Če je vrednost levega operanda manjša od ali enaka vrednosti desnega, je trditev True. | (b <= a) je True. |
| Operator | Opis | Primer |
|---|---|---|
| = | Dodeli vrednost z desne strani operandu na levi strani | v = a + b dodeli vrednost a + b spremenljivki v |
| += prištej in shrani | Vrednost desnega operanda prišteje levemu operandu in vanj shrani rezultat | b += a je isto kot b = b + a |
| += odštej in shrani | Vrednost desnega operanda odšteje od levega operanda in vanj shrani rezultat | b -= a je isto kot b = b - a |
| += pomnoži | Množi levi operand z desnim in rezultat shrani v levega | b *= a je isto kot b = b * a |
| /= deli in shrani | Deli levi operand z desnim in rezultat shrani v levega | b /= a je isto kot b = b / a |
| %= Modul in shrani | Izračuna modul dveh operandov in rezultat shrani v levi operand | b %= a je isto kot b = b % a |
| **= potenca in shrani | Izračuna potenciranje in rezultat shrani v levega | b**= a je isto kot b = b ** a |
| //= Floor deli in shrani | Opravi "Floor" deljenje in rezultat shrani v levega | |
V splošnem so to operatorji &, |, ^, ~. Ti operatorji izvajajo operacije na posameznih bitih. Imejmo a = 60 in b = 13; V binarnem zapisu bi to bilo:
a = 0011 1100
b = 0000 1101
In sedaj operacije:
a & b = 0000 1100
a | b = 0011 1101
a ^ b = 0011 0001
~ a = 1100 0011
Funkcija bin() omogoča binarno predstavitev nekega števila. Pri Pythonu poznamo naslednje operatorje na bitih:
| Operator | Opis | Primer |
|---|---|---|
| & Binarni AND | Če je nek bit 1 v obeh operandih, bo 1 v istoležnem bitu rezultata. Sicer pa 0 | (a & b) (pomeni 0000 1100) |
| | Binarni OR | Če je nek bit 1 v vsaj enem od operandov, bo 1 v istoležnem bitu rezultata. Sicer pa 0. | (a | b) = 61 (pomeni 0011 1101) |
| ^ Binarni XOR | Če je nek bit 1 samo v enem od operandov, bo 1 v istoležnem bitu rezultata. Sicer pa 0 | (a ^ b) = 49 (pomeni 0011 0001) |
| ~ Binarni enojni komplement | V rezultatu bodo istoležni biti obrnjeni (1 v 0 in obratno) | (~a ) = -61 (pomeni 100 0011 . |
| << Binarni pomik v levo | Vrednost levega operanda bo premaknjena levo za število bitiv, določenih z desnim operandom. | a << 2 = 240 (pomeni 1111 0000) |
| >> Binarni pomik v desno | Vrednost levega operanda bo premaknjena desno za število bitiv, določenih z desnim operandom | a >> 2 = 15 (pomeni 0000 1111) |
| Operator | Opis | Primer |
|---|---|---|
| and logični in | Če sta levi in desni operand True, je trditev True. Sicer pa False | (c and c) je True. |
| or logični ali | Če je levi ali desni operand True, je tudi trditev True. Sicer pa False | (c or d) is True. |
| not logični ne | Invertira logično stanje operanda. | not(c and c) is False. |
Operatorji članstva preverjajo članstvo v zaporedjih, kot so nizi, seznami ali tuples. Poznamo dva taka operatorja.
| Operator | Opis | Primer |
|---|---|---|
| in | Če najde spremenljivko v podanem zaporedju, je True, sicer False. | x in y, Rezultat bo True, če je x član zaporedja y. |
| not in | Če ne najde spremenljivke v podanem zaporedju je True, sicer je False. | x not in y, Reziultat bo True, če x ni član zaporedja y. |
Operatorji identitete primerjajo lokacije dveh objektov v pomnilniku računalnika in tako ugotovijo, ali gre za isti objekt. TPoznamo dva operatorja identitete.
| Operator | Opis | Primer |
|---|---|---|
| is | Je True, če spremenljivki na obeh straneh operatorja kažeta na isti objekt. | x is y, je True, če je id(x) enak id(y). |
| is not | Je False, če spremenljivki na obeh straneh operatorja kažeta na isti objekt. | x is not y, je False, če je id(x) enak id(y). |
Naslednja tabela prikazuje prednosti operatorjev od najvišje do najnižje.
| Prednost | Operator | Opis |
|---|---|---|
| 1 | ** | Potenciranje |
| 2 | ~ + - | komplement, unarni plus in minus |
| 3 | * / % // | Množenje, deljenje, modulo in floor deljenje |
| 4 | + - | Seštevanje in odštevanje |
| 5 | >> << | Pomik bitov desno ali levo |
| 6 | & | Bitnarna operacija 'AND' |
| 7 | >^ | | Binarni ekskluzivni 'OR'in navadni 'OR' |
| 8 | <= < > >= | Operatorji primerjanja |
| 9 | <> == != | Operatorji enakosti |
| 10 | = %= /= //= -= += *= **= | Operatorji dodeljevanja |
| 11 | is is not | Operatorji identitete |
| 12 | in not in | Operatorji članstva |
| 13 | not or and | Logični operatorji |