Глобальные и локальные переменные в Python3 - PullRequest
0 голосов
/ 31 октября 2018

У меня проблемы с глобальными переменными. Я пытаюсь создать переменную, изменить ее, распечатать, изменить снова и распечатать снова. Однако я получаю сообщение об ошибке, даже если мои переменные уже определены как глобальные. Почему это?

myGlobal = 5

def func1():
    global myGlobal
    myGlobal = 42
    func2()

def func2():
    print (myGlobal)
    myGlobal = myGlobal - 10
    print (myGlobal)

func1()

UnboundLocalError: локальная переменная 'myGlobal', на которую ссылается перед присваиванием

1 Ответ

0 голосов
/ 31 октября 2018

Вот ваш фиксированный код:

myGlobal = 5

def func1():
    global myGlobal
    myGlobal = 42
    func2()

def func2():
    global myGlobal
    print (myGlobal)
    myGlobal = myGlobal - 10
    print (myGlobal)

func1()

Что вы делаете неправильно, так это то, что вы сделали myGlobal глобальной переменной для func1, но не для func2. Предполагается, что вы также должны сделать ее глобальной, если хотите ее использовать. Это не так, что если вы сделаете его глобальным в func1, то он будет глобальным и для func2, для каждой функции его необходимо сделать глобальным, иначе он будет работать как локальная переменная, но так как он даже не определен как локальный, поэтому он дает ошибка. Надеюсь, это поможет вам.

...