从函数内将变量插入全局命名空间?

新手上路,请多包涵

是否可以将对象添加到全局命名空间,例如,通过使用 globals()dir()

 def insert_into_global_namespace(var_name, value):
    globals()[var_name] = value

insert_into_global_namespace('my_obj', 'an object')
print(f'my_obj = {my_obj}')

但这只适用于当前模块。

原文由 Dan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 391
2 个回答

是的,只需使用 global 声明。

 def func():
    global var
    var = "stuff"

原文由 BrenBarn 发布,翻译遵循 CC BY-SA 3.0 许可协议

很简单

globals()['var'] = "an object"

和/或

def insert_into_namespace(name, value, name_space=globals()):
    name_space[name] = value

insert_into_namespace("var", "an object")

注意 globals 是内置关键字,即 'globals' in __builtins__.__dict__ 计算为 True

原文由 jolvi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题