Lokalne (?) zmienna odwołująca się przed przypisaniem [duplikat]
to pytanie ma już odpowiedzi tutaj :
przypisanie zmiennej z funkcji rodzica: "zmienna lokalna odwołana przed przypisaniem" [duplikat]
(5 odpowiedzi)
Python 3: UnboundLocalError: zmienna lokalna odwołująca się przed przypisaniem [duplikat]
(5 odpowiedzi)
Zamknięte w zeszłym roku .
test1 = 0
def testFunc():
test1 += 1
testFunc()
Otrzymuję następujący błąd:
UnboundLocalError: zmienna lokalna 'test1' / align = "left" /
Błąd mówi, że 'test1'
jest zmienną lokalną, ale myślałem, że ta zmienna jest globalna
Czy jest globalny czy lokalny i jak rozwiązać ten błąd nie przekazując globalnego test1
jako argumentu do testFunc
?
134
Author: Samuel Liew, 2012-08-10
3 answers
Aby zmodyfikować test1
wewnątrz funkcji, musisz zdefiniować test1
jako zmienną globalną, na przykład:
test1 = 0
def testFunc():
global test1
test1 += 1
testFunc()
Jeśli jednak potrzebujesz tylko odczytać zmienną globalną, możesz ją wydrukować bez użycia słowa kluczowego global
, Tak:
test1 = 0
def testFunc():
print test1
testFunc()
Ale gdy chcesz zmodyfikować zmienną globalną, musisz użyć słowa kluczowego global
.
239
Author: Florin Stingaciu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 14:07:56
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-01 14:07:56
Najlepsze rozwiązanie: nie używaj global
s
>>> test1 = 0
>>> def test_func(x):
return x + 1
>>> test1 = test_func(test1)
>>> test1
1
57
Author: jamylak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-10 15:45:26
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-10 15:45:26
Musisz określić, że test1 jest globalny:
test1 = 0
def testFunc():
global test1
test1 += 1
testFunc()
11
Author: Stanislav Heller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-10 15:41:28
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-10 15:41:28