Как установить произвольную переменную как глобальную в Python? - PullRequest
0 голосов
/ 25 ноября 2018

Как вы динамически устанавливаете переменные как глобальные в функциях Python 3?Примерно так:

def func1(i):
    global i
    #Some operation on i

Как мне получить глобальную переменную, чтобы задать любую ранее существующую переменную, переданную в функцию?Так что:

func1(foo)

будет выполнять глобальную преформу операции с переменной foo, а не создавать новую глобальную переменную с именем i?

1 Ответ

0 голосов
/ 25 ноября 2018

Если я правильно понял, ваша проблема: я связал имя с каким-то объектом на уровне модуля;Теперь я хочу написать функцию, которая изменяет привязку этого глобального имени к другому объекту, переданному в качестве аргумента функции.

В Python на глобальные имена можно ссылаться внутри функции (при условии, что вы не связываетедругой объект с тем же именем), но для изменения их привязки вы должны сначала объявить эти имена как global.Причина проста: по умолчанию все имена, связанные внутри функции, имеют область действия функции.

GLOBAL_NAME = 12
ANOTHER_GLOBAL_NAME = 50

def func(value):
    global GLOBAL_NAME
    GLOBAL_NAME = value
    print(GLOBAL_NAME, ANOTHER_GLOBAL_NAME)

При вызове func(33), GLOBAL_NAME будет привязан к объекту 33.ANOTHER_GLOBAL_NAME это просто ссылка на глобальное имя;так как это имя не связано внутри функции, Python ищет это имя в глобальной области видимости.

Для получения дополнительной информации о включении области действия Python вы можете обратиться к документации Python по глобальному выражению до PEP-0227 и до PEP-3104 .

...