Не делай этого.Это затрудняет чтение вашего кода.
Но если вы настаиваете, попробуйте изменить область действия globals()
:
def func(**kwargs):
for key, val in kwargs.items():
globals()[key] = val
print(globals())
print(my_var_key)
func(my_var_key='foobar')
и выведите:
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10f058f28>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'test.py', '__cached__': None, 'func': <function func at 0x10ef52268>, 'my_var_key': 'foobar'}
foobar
Это наверняка загрязнит ваше глобальное пространство имен (и вы не можете использовать locals()
, потому что интерпретатор сбивает с толку).Опять же, не делай этого.