Lokalne spremenljivke

Kot smo videli že na podlagi nekaterih zgornjih primerov, lahko funkcija čisto normalno obdeluje spremenljivke iz glavnega bloka programa. Lahko pa poleg njih uporablja tudi svoje spremenljivke, ki obstajajo le znotraj klica funkcije, ko pa se klic konča, te spremenljivke izginejo in jih klicatelj ne vidi. Takim spremenljivkam pravimo lokalne spremenljivke, tistim iz glavnega bloka programa pa globalne spremenljivke.

x
 
1
def Zmnozi(x):
2
  # produkt je lokalna spremenljivka
3
  produkt = a * x
4
  print(produkt)
5
6
a = 10 # a je globalna spremenljivka
7
Zmnozi(20) # izpiše: 200
8
print(produkt) # napaka, lokalne spremenljivke se
9
               # v glavnem delu programa ne vidi

Izvedi Počisti



Zgornja funkcija Zmnozi uporablja globalno spremenljivko a, hkrati pa tudi definira in uporablja svojo lokalno spremenljivko produkt; slednje glavni del programa ne vidi.

Možno je celo, da obstajata hkrati tako lokalna kot globalna spremenljivka z enakim imenom. V tem primeru funkcija vidi le svojo lokalno spremenljivko, istoimenske globalne spremenljivke pa ne:


10
 
1
def Zmnozi(x):
2
  # produkt je lokalna spremenljivka
3
  produkt = a * x
4
  print(produkt)
5
6
a = 10 # a je globalna spremenljivka
7
# produkt je globalna spremenljivka
8
produkt = a * 30
9
Zmnozi(20) # izpiše: 200
10
print(produkt) # izpiše: 300

Izvedi Počisti



Kako vemo, ali stavek produkt = a * x (v funkciji Zmnozi) prireja globalni spremenljivki produkt ali ustvari lokalno spremenljivko z enakim imenom? V pythonu velja glede tega preprosto pravilo: če telo funkcije vsebuje kak stavek, ki neki spremenljivki nekaj prireja, bo funkcija imela lokalno spremenljivko s tem imenom.

9
 
1
def Zmnozi(x):
2
  print(produkt) # napaka!
3
  # produkt je lokalna spremenljivka
4
  produkt = a * x
5
6
a = 10 # a je globalna spremenljivka
7
# produkt je globalna spremenljivka
8
produkt = a * 30
9
Zmnozi(20) # izpiše: 200

Izvedi Počisti



Zgornji primer vrne napako. Na naslednji strani preberi, zakaj se to zgodi.