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

如何将Python配置文件中的所有变量导入到列表中?

解决方案:自动收集config.py中的所有变量值到列表

这问题我之前也碰到过,几百个变量手动挨个写确实不现实,给你两个可行的方案,适配你用通配符导入的场景:

方案1:直接导入config模块(更可靠)

其实比起用from config import *,直接导入模块然后遍历它的属性会更清晰,而且能避免污染当前命名空间,代码如下:

import config

# 筛选出所有用户定义的变量(排除模块内置的下划线开头属性)
config_values = [val for name, val in vars(config).items() if not name.startswith('_')]

解释:

  • vars(config)会返回config模块的属性字典,里面包含了所有模块级别的变量和内置属性
  • 用not name.startswith('_')过滤掉模块的内置属性(比如__name__、__file__这类),剩下的就是你在config.py里定义的所有变量
  • 最后把这些变量的值提取出来组成列表就行

方案2:适配已用from config import *的场景

如果已经确定要用通配符导入,那可以通过对比导入前后的全局变量来收集新增的变量:

# 先记录导入前的全局变量集合
before_import = set(globals().keys())

from config import *

# 计算导入后新增的变量,过滤掉内置属性后提取值
config_values = [globals()[name] for name in set(globals().keys()) - before_import if not name.startswith('_')]

解释:

  • 导入前先把当前全局命名空间的变量名存下来,导入后对比得到新增的变量名,这些就是从config.py导入的内容
  • 同样过滤掉下划线开头的属性,避免把一些意外导入的内置内容加进来

注意事项:

  • 这两个方案都默认你在config.py里定义的变量都是非下划线开头的,如果有下划线开头的自定义变量,需要调整过滤条件
  • 确保config.py里没有导入其他模块或者定义函数/类,否则这些内容也会被收集进来(不过你说config.py仅包含变量,所以没问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 20:27:31