Локальная (?) Переменная, на которую ссылаются перед назначением
Возможный дубликат:
локальная переменная, указанная перед назначением
Python 3: UnboundLocalError: локальная переменная, указанная перед назначением
test1 = 0
def testFunc():
test1 += 1
testFunc()
Я получаю следующую ошибку:
UnboundLocalError: локальная переменная 'test1', указанная перед назначением.
Ошибка говорит, что 'test1'
- это локальная переменная, но я думал, что эта переменная глобальна
Итак, он глобальный или локальный и как решить эту ошибку, не передавая глобальный test1
как аргумент testFunc
?
Ответы
Ответ 1
Чтобы изменить test1
внутри функции, вам нужно будет определить test1
как глобальную переменную, например:
test1 = 0
def testFunc():
global test1
test1 += 1
testFunc()
Однако, если вам нужно только прочитать глобальную переменную, вы можете ее распечатать, не используя ключевое слово global
, например:
test1 = 0
def testFunc():
print test1
testFunc()
Но всякий раз, когда вам нужно изменить глобальную переменную, вы должны использовать ключевое слово global
.
Ответ 2
Лучшее решение: не используйте global
s
>>> test1 = 0
>>> def test_func(x):
return x + 1
>>> test1 = test_func(test1)
>>> test1
1
Ответ 3
Вы должны указать, что test1 является глобальным:
test1 = 0
def testFunc():
global test1
test1 += 1
testFunc()