Python:导入模块时设置配置的推荐方法是什么?

8 投票
1 回答
4299 浏览
提问于 2025-04-16 05:21

我看到有人用“猴子补丁”这种方法来设置模块的选项,比如:

import mymodule  
mymodule.default_img = "/my/file.png"  
mymodule.view_default_img()  

还有,像Django这样的框架有一个settings.py文件,用来管理整个Django应用的设置,这让我有点不舒服。

那么,还有什么其他方法可以管理模块的配置设置呢?有什么推荐的方式吗?似乎没有特别好的方法来设置模块级别的配置。

显然,完全避免配置是最理想的,通常使用类或者把参数传给函数会更好。但是,有时候你无法完全避免设置某些东西,有时候为了方便,确实有必要有一些全局的模块设置(比如Django的模板系统——如果每个模板都要指定基础路径,那简直是个噩梦,绝对不是好的代码风格)。

1 个回答

3

一个选择是使用ConfigParser模块。你可以把设置放在一个非Python的配置文件里,然后每个模块都从这个文件中读取自己的设置。另一个选择是在每个模块里设置一个配置方法,客户端代码可以把参数传给这个方法。

# foo.py
setting1 = 0
setting2 = 'foo'

def configure(config1, config2):
    global setting1, setting2

    setting1 = config1
    setting2 = config2

然后在导入模块的时候,

import foo

foo.configure(42, 'bar')

我个人觉得,最好的方法是像Django那样使用设置文件。

撰写回答