Как мне добавить один к переменной в Python 3.8? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть код:

x = 0

def start():
    x = x + 1
    print (str(x))

Но я получаю сообщение о том, что я упоминал переменную более одного раза, поэтому я нашел ее в Google и попробовал:

x = 0

def start():
    x += x
    print (str(x))

1 Ответ

1 голос
/ 17 апреля 2020

Если вы хотите повлиять на global x, вы должны явно указать, что:

def start():
    global x
    x = x + 1
    print (str(x))

Причина, по которой у вас возникла проблема, заключается в том, что x = x + 1 сначала создает local x потому что вы присваиваете ему, а он явно не помечен как глобальный.

Затем он использует это local x (выглядит "вверх") найти ближайшую область, содержащую имя) для вычисления x + 1 и, поскольку оно еще не было инициализировано, вы получите ошибку local variable 'x' referenced before assignment (не уверена, откуда взято ваше "упомянутое более одного раза").

Обратите внимание, что это не проблема с чем-то вроде y = x + 1, так как созданная локальная переменная y, и поэтому она будет смотреть вверх в области видимости, чтобы найти global x для расчет.

Обратите внимание, что x += x не добавляет один, а удваивает значение. В любом случае, он (и более правильный x += 1) все еще страдает от неинициализированной проблемы с переменной. Это потому, что x += n это просто синтактический c сахар для x = x + n.

...