#python #function #variables #error-handling
Вопрос:
Эй, у меня возникли некоторые проблемы с пониманием того, что я сделал не так/нахожу способ это исправить, вы можете мне помочь, ребята?
def main():
Keys = 0
def Function1():
global all
def Function2():
global all
print(str(Keys))
Function2()
Keys = Keys 1
Function1()
main()
каждый раз, когда я пытаюсь запустить это, я получаю сообщение об ошибке «свободная переменная ‘Ключи’, на которую ссылаются перед назначением в заключительной области».
Заранее спасибо!
Комментарии:
1. Как ты думаешь
global all
, что он делает?
Ответ №1:
Вам нужно определить global Keys
для каждой функции. Функция считает, что Keys
это локальная переменная.
def main():
global Keys
Keys = 0
def Function1():
global Keys
global all
def Function2():
global Keys
global all
print(str(Keys))
Function2()
Keys = Keys 1
Function1()
main()
Однако использование global
плохо. Вот список причин, по которым использование global
плохо
Таким образом, вместо использования global
вы можете передать его в качестве параметра.
def main():
Keys = 0
def Function1(Keys):
def Function2(Keys):
print(str(Keys))
Function2(Keys)
Keys = Keys 1
Function1(Keys)
main()
Кроме того, all
это функция в python. Нет абсолютно никакой необходимости делать это global
Комментарии:
1. Большое вам спасибо!
2. Приветствую @Zachary, подумайте о том, чтобы принять ответ