Ваш предложенный подход
globals()["var_name"] = value
действительно самый питонский путь. В частности, это значительно более Pythonic, чем использование eval , которое будет вашей основной (хотя и не только) альтернативой.
Однако, если вы все еще хотите использовать setattr
, вы можете сделать это, используя sys.modules , чтобы получить ссылку на текущий объект модуля с переменной __name__
текущего модуля (* 1012) * объяснил здесь ) следующим образом:
import sys
setattr(sys.modules[__name__], "var_name", value)