You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何通过变量名导入指定包的所有对象到当前命名空间

解决方案

实现逻辑

from X import *的本质是把模块X中允许导出的对象批量写入当前作用域的全局变量字典,你可以手动实现这个逻辑:

  1. 用importlib.import_module拿到模块对象
  2. 遍历模块的可导出属性:优先取模块的__all__属性(如果模块定义了的话),否则取所有非下划线开头的属性
  3. 把这些属性和对应值写入当前全局变量字典globals()

适配示例的代码

你可以把main.py的代码调整为如下内容:

import importlib

from aux1 import var
module = importlib.import_module(var)

# 实现等价于 from var import * 的效果
if hasattr(module, '__all__'):
    # 模块定义了__all__的话,就导入__all__里指定的所有对象
    export_names = module.__all__
else:
    # 没有定义__all__的话,导入所有非下划线开头的公开对象
    export_names = [name for name in dir(module) if not name.startswith('_')]

# 批量写入当前全局变量
globals().update({name: getattr(module, name) for name in export_names})

运行之后你就可以直接在main.py里访问a、b变量了。

注意事项

  • 该写法仅适用于快速测试场景,正式环境不推荐使用,会导致命名空间污染
  • 如果导入模块的属性和当前作用域变量重名,会直接覆盖原有变量的值,测试时请注意避免冲突

内容的提问来源于stack exchange,提问作者BioBroo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:06:01