Mam menší problém s globálními a lokálními proměnnými. Zkusil jsem si vytvořit 3 funkce, viz kód níže. První funkce pouze čte globální proměnnou, druhá funkce vytváří vlastní lokální proměnnou se stejným názvem jako globální proměnná a tiskne ji. Třetí funkce dělá stejné úkony jako první a druhá funkce dohromady, ale bohužel nefunguje, dokonce odmítá vytisknout globální proměnnou, která je hned na prvním řádku. Mohl by mi prosím někdo vysvětlit, proč třetí funkce odmítá poslouchat?
kód:
def fce_1():
# Precte hodnotu globalni promenne 'spam'.
print "tisknu hodnotu globalni promenne 'spam':", spam
def fce_2():
# Vytvori lokalni promennou 'spam' a precte ji.
spam = 1
print "toto je moje vlastni lokalni promenna 'spam':", spam
def fce_3_nefunkcni():
# Precte hodnotu globalni promenne 'spam'.
# Vytvori lokalni promennou "spam" a precte ji.
print spam
spam = 1
print spam
spam = 10
fce_1()
fce_2()
fce_3_nefunkcni()
výpis:
>>>
tisknu hodnotu globalni promenne 'spam': 10
toto je moje vlastni lokalni promenna 'spam': 1
Traceback (most recent call last):
File "C:/PYprogramy/zkouska_fce.py", line 20, in <module>
fce_3_nefunkcni()
File "C:/PYprogramy/zkouska_fce.py", line 13, in fce_3_nefunkcni
print spam
UnboundLocalError: local variable 'spam' referenced before assignment