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

bry*_*oyt 6 python

我见过人们使用猴子修补来设置模块上的选项,例如:

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

例如,Django对整个Django应用程序都有settings.py,而且它总是会对我产生一些影响.

管理模块配置设置的其他方法有哪些?什么推荐?似乎通常没有很好的方法来设置模块级配置.

显然,完全避免配置是目前最优选的,通常最好使用类,或者将参数传递给函数.但有时你无法避免某种类型的设置,有时为了方便起见全局模块范围的设置确实有意义(例如,Django的模板系统 - 必须为每个模板指定基本路径一场噩梦,绝对不是很好的DRY代码).

aar*_*ing 3

一种选择是ConfigParser模块。您可以将设置放在非 python 配置文件中,并让每个模块从中读取其设置。另一种选择是在每个模块中都有一个配置方法,客户端代码也可以传递它的参数。

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

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

    setting1 = config1
    setting2 = config2
Run Code Online (Sandbox Code Playgroud)

然后在导入模块中,

import foo

foo.configure(42, 'bar')
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我认为最好的方法是使用像 django.settings 这样的设置文件。

  • 事实上,我可能没有很好地表达我的问题。当我说“模块的配置设置”时,我指的是 Python 中。所以,也许是一个更好的问题:当您导入模块时,在 Python 中在运行时设置模块级状态/参数的最佳方法是什么?例如,当实例化一个类时,设置类级状态的常见 Python 方法是使用 __init__ 函数的参数。模块的 __init__ 函数是什么? (3认同)
  • @bryhoyt我认为你所描述的几乎是我所介绍的三个选项中的第二个。 (2认同)