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

Python 3:如何无需模块前缀直接调用其他文件中的变量?

解决直接调用模块变量的问题

当然有办法帮你省去每次写resources.的麻烦!下面是几种实用的方案,你可以根据项目情况选择:

方案1:批量导入所有变量

最直接的方式就是用from resources import *,这样就能直接使用模块里的所有变量了:

from resources import *

example = image1
another_example = sound_effect

⚠️ 注意:这种方式虽然省事,但有两个小问题:

  • 如果你的主文件里有和资源同名的变量,会直接覆盖,容易引发bug;
  • 代码可读性会降低,其他开发者看到image1时,需要额外找它的来源。

方案2:导入特定需要的变量

如果不想导入全部变量,只挑自己需要的导入,既清晰又能避免冲突:

from resources import image1, image2, background_music

example = image1

这种方式的好处是一目了然,别人一看就知道你用到了哪些资源,也不用担心命名冲突,适合资源数量不多的场景。

方案3:动态导入所有公开资源

如果你的resources.py里有大量资源,手动一个个导入太麻烦,可以用代码动态把模块的公开属性注入到当前命名空间:

import resources

# 遍历模块的所有属性,只导入非私有(以下划线开头)的变量
for attr in dir(resources):
    if not attr.startswith('_'):
        globals()[attr] = getattr(resources, attr)

example = image1

这个方法能一次性导入所有公开资源,但要注意过滤下划线开头的私有属性,避免导入模块内置的特殊方法或变量。另外同样要留意命名冲突的问题。

额外提醒

如果resources.py里的资源是运行时动态生成的(比如通过函数加载后才创建的变量),dir(resources)可能无法获取到这些变量,这时候你需要明确指定要导入的变量名,或者在resources.py里把这些动态生成的变量添加到__all__列表中,这样from resources import *就能正确导入它们了:

# 在resources.py里添加
__all__ = ['image1', 'image2', 'dynamic_resource']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:47:44