У меня возникли проблемы с изменением / обновлением глобальных переменных в Python - PullRequest
0 голосов
/ 15 марта 2019

Так что у меня возникли проблемы с пониманием основ глобальной переменной, так как я новичок в python. Я хотел попробовать изменить глобальную переменную, но, к сожалению, она не сработала. Может ли кто-нибудь из вас объяснить и помочь мне решить мою проблему. Спасибо !!

global x
x = 10
def NEWX():
     print (x)
     x = x + 5
     print (x)
print (x)
NEWX()
print(x)

#this displays 10 10 15 10

Ответы [ 3 ]

0 голосов
/ 15 марта 2019
x = 10

def NEWX():
     global x
     print (x)
     x = x + 5
     print (x)

print (x)
NEWX()
print(x)

Правила глобальных переменных:

  • global ключевое слово вне функции не действует
  • Переменная вне функции по умолчанию является глобальной
  • глобальное ключевое слово необходимо для чтения и записи глобальной переменной в функции
0 голосов
/ 15 марта 2019

В вашем коде вы сначала печатаете значение x. Затем вызывается функция NEWX():, которая печатает x, затем добавляет 5 к x и печатает новое значение. После вызова функции x печатается снова.

Чтобы понять, что происходит, посмотрите пример, содержащий исправление:

 x = 10

def NEWX():
    print (x)
    global x
    x = x + 5
    print (x)
print (x)
NEWX()
print(x)

enter image description here

0 голосов
/ 15 марта 2019

Попробуйте этот рефакторинг:

x = 10


def new_x():
    global x
    print(x)
    x = x + 5
    print (x)


print(x)
new_x()
print(x)

# prints 10 10 15 15

Мне не удалось запустить ваш исходный код, он пожаловался на то, что x не определено в функции. В рамках функции x неизвестно. Это известно в более высоком масштабе, но не в вашей функции. Вот почему оператор global x должен быть в функции - чтобы Python знал, что он использует x из внешней области видимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...