UnboundLocalError: функция не может быть запущена, если порядок операторов изменен - PullRequest
0 голосов
/ 21 октября 2018

У меня определена глобальная переменная

x=100

Этот код прекрасно работает

def fn():
    x=1
    z=x+1
    print z             #2

Но это не работает отлично

def f2():
    z=x+1
    print z
    x=1

Traceback (most recent call last):
  File "<pyshell#83>", line 1, in <module>
    fn()
  File "<pyshell#82>", line 2, in fn
    z=x+1
UnboundLocalError: local variable 'x' referenced before assignment

Яне уверен, почему это произошло.Компилятор пытается интерпретировать x как локальный в случае 2, но x не был инициализирован?

1 Ответ

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

Вы можете использовать ключевое слово global для извлечения и изменения глобального значения x.

Примерно так:

x = 100

def fn():
    x = 1
    z = x + 1
    print z


def f2():
    global x
    z = x + 1
    print z # -> 101
    x = 1

f2()

Это также может быть полезно - https://www.programiz.com/python-programming/global-keyword

...