Присвоение переменной имени, заданного в параметре вызова функции

Можно ли задать глобальную переменную в Python с именем, которое будет в параметре данной функции? Понимаю, что это очень плохой стиль и ведет к множеству проблем, но существует ли такая возможность?


Ответы (2 шт):

Автор решения: CrazyElf

Ну это легко делается через globals():

def set_global_var(name, value):
    globals()[name] = value

set_global_var("something", "anything")

print(something)

Вывод:

anything
→ Ссылка
Автор решения: vadim vaduxa
import sys
A = 1

def exp1(**kwargs):
    globals().update(kwargs)

def exp2(**kwargs):
    module = sys.modules[__name__]
    for name in kwargs:
        setattr(module, name, kwargs[name])

print(A)  # 1
exp1(A=2)
print(A)  # 2
exp1(A=3)
print(A)  # 3
→ Ссылка