Меняйте глобальную переменную всякий раз, когда вызывается функция - PullRequest
0 голосов
/ 09 марта 2019

Может кто-нибудь объяснить мне, как я могу изменить значение x на "не работает" всякий раз, когда вызывается функция globallyChange ()?Большое спасибо!

def globallyChange():
    x = "didn't work"

def main():
    global x
    x = 10
    globallyChange() #Call the function for changes.
    print(x)

main()

CURRENT OUTPUT: >> 10

Я попробовал то же самое, когда list / array является глобальной переменной, а когда вызывается функция globallyChange (), она фактически изменяет список глобальных переменных.Мне было интересно, как это отличается между глобальной переменной integer / string / bool и глобальной переменной списка?

def globallyChange():
    lst.append(1)
    lst.append(5)
    lst.append(7)

def main():
    global lst
    lst = []
    globallyChange() #Call the function for changes.
    print(lst)

main()

OUTPUT: >> [1,5,7]

Ответы [ 2 ]

2 голосов
/ 09 марта 2019

Вам необходимо поместить объявление global во все функции, которые присваиваются переменной.Так должно быть:

def globallyChange():
    global x
    x = "didn't work"

Причина, по которой вам не нужно это в версии со списком, заключается в том, что вы не присваиваете переменную.Вы просто читаете переменную;который автоматически ищет глобальную переменную, если локальная переменная не может быть найдена.append() не присваивает переменной, он изменяет список на месте.

1 голос
/ 09 марта 2019

Вам нужно определить x как глобальную переменную во всех функциях, которые на нее ссылаются. В противном случае python создает новую локальную переменную.

Попробуйте это:

x = 0
def globallyChange():
    global x
    x = "didn't work"

def main():
    global x
    x = 10
    globallyChange() #Call the function for changes.
    print(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...