Я только начал программировать и пытался что-то написать, но (конечно) это не получилось. После того, как я дошел до настоящей проблемы: UnboundLocalError
. Таким образом, чтобы спасти вас от всех обломков вокруг меня раздели код к этому:Как обойти UnboundLocalError?
def test():
try:
i1 = int(i1)
i2 = int(i2)
except ValueError:
print "you failed in typing a number"
def input():
i1 = raw_input('please type a number \n >')
i2 = raw_input('please type a number \n >')
Тогда я записал:
>>>input()
please insert a number
> 3
please insert a number
> 2
>>>test()
А потом я получил:
that was not a number
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in test
UnboundLocalError: local variable 'i1' referenced before assignment
Как может Я решаю это по-питоновски? Или я должен пойти совершенно по-другому?
Подумайте об этом так: обычные переменные, такие как 'i1' и' i2', являются локальными для функции и не видны вне нее. Ваша функция 'input' создает локальные переменные, которые неизвестны' test'. Если вы хотите получить доступ к данным в 'test', эти данные должны быть глобальными (см.« Глобальное »ключевое слово для глобальных переменных) или явно передаваться ему с использованием аргументов функции (см. Ответ Cédrick Julien). Как правило, следует избегать глобальных переменных, если это возможно. –