2.2. Varijable i osnovni tipovi¶
Varijabla je ime koje vežete uz vrijednost operatorom =. Nakon dodjele, ime se može koristiti svugdje gdje se može koristiti i vrijednost:
width = 320
height = 240
pixels = width * height
print(pixels) # prints 76800
Desna strana znaka = se prvo vrednuje, a zatim se rezultat veže uz ime s lijeve strane. Čitanje imena koje nikad nije bilo dodijeljeno podiže NameError.
Varijabla je samo oznaka. Ona pokazuje na vrijednost – vrijednost živi negdje drugdje, a ista vrijednost može imati bilo koji broj oznaka.
Varijable su oznake koje pokazuju na vrijednosti. Ponovna dodjela varijable pomiče oznaku; ona ne mijenja vrijednost na koju je oznaka prije pokazivala.¶
2.2.1. Pravila imenovanja¶
Imena započinju slovom ili podvlakom i mogu sadržavati slova, znamenke i podvlake.
frame_counti_internalsu u redu;1st_frameje sintaksna pogreška.Imena razlikuju velika i mala slova:
Widthiwidthsu dvije različite varijable.Izbjegavajte ponovno korištenje ugrađenih imena poput
list,str,id()iliprint()– njihovo zasjenjivanje ne podiže pogrešku, ali izvorni ugrađeni element postaje nedostupan do kraja skripte.Konvencija:
snake_caseza varijable i funkcije,ALL_CAPSza konstante koje ne namjeravate mijenjati,CamelCaseza imena klasa.
2.2.2. Osnovni tipovi¶
Svaka vrijednost u Pythonu ima tip koji određuje koje operacije podržava. Četiri tipa koja ćete najviše pisati su:
int – cijeli brojevi, pozitivni ili negativni. MicroPython cijeli brojevi rastu onoliko koliko memorija dopušta. Literali se pišu kao obične znamenke:
0,42,-7. Heksadekadski (0x1A), oktalni (0o17) i binarni (0b1010) literali također su valjani i korisni za registre i bitmaske.float – brojevi s decimalnom točkom ili eksponentom:
3.14,1.0,-0.5,2e6(= 2.000.000,0). Svi float brojevi na kameri su IEEE 754 32-bitni – precizni do otprilike sedam značajnih znamenki.bool – jedan od dva literala
TrueiliFalse(pripazite na velika slova).str – tekst, napisan kao znakovi između jednostrukih ili dvostrukih navodnika:
"hello",'OpenMV'. Oba stila navodnika su ekvivalentna; odaberite onaj koji vam omogućuje izbjegavanje escapeanja navodnika koji se pojavljuju unutar niza.
Postoji i peta vrijednost koju vrijedi odmah upoznati:
None – jedina vrijednost tipa
NoneType. Koristi se za značenje „nema vrijednosti” ili „još nije postavljeno”. Funkcije koje eksplicitno ne vraćaju ništa implicitno vraćajuNone.
2.2.3. Provjera i pretvorba tipova¶
Ugrađena funkcija type() vraća tip bilo koje vrijednosti:
>>> type(42)
<class 'int'>
>>> type(3.14)
<class 'float'>
>>> type("hello")
<class 'str'>
Svaki tip ujedno služi i kao funkcija pretvorbe. Predajte joj vrijednost drugog tipa i dobit ćete ekvivalentnu vrijednost novog tipa natrag – kada je pretvorba dobro definirana:
>>> int("42")
42
>>> int(3.9)
3 # truncates toward zero, not rounds
>>> float("1.5")
1.5
>>> str(255)
'255'
>>> bool(0), bool(1), bool("")
(False, True, False)
Pretvorbe koje nisu dobro definirane podižu ValueError:
>>> int("hello")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid syntax for integer with base 10
2.2.4. Ponovna dodjela i dinamičko tipiziranje¶
Ime se u bilo kojem trenutku može ponovno dodijeliti vrijednosti bilo kojeg tipa. Sljedeće je dopušteno:
x = 42
x = "now I'm a string"
x = 3.14
Python ne veže varijablu uz tip. Kod koji ovisi o tome da je x cijeli broj jednostavno očekuje cijeli broj na mjestu gdje ga koristi; ako dobije nešto drugo, dobit ćete TypeError tijekom izvođenja.
Napomena
Ponovna dodjela vrijednosti varijabli x ne mijenja vrijednost na koju je staro vezivanje pokazivalo. Ako dva imena dijele istu vrijednost, ponovna dodjela jednog ne utječe na drugo:
a = [1, 2, 3]
b = a # both point at the same list
a = "different now"
print(b) # still [1, 2, 3]
Mutiranje dijeljene vrijednosti je drugačije: metoda poput list.append mijenja vrijednost na koju vezivanje pokazuje, pa svako drugo ime koje pokazuje na tu istu vrijednost vidi promjenu.