Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:导入模块时,建议使用什么方法设置模块的配置设置?_Python - Fatal编程技术网

Python:导入模块时,建议使用什么方法设置模块的配置设置?

Python:导入模块时,建议使用什么方法设置模块的配置设置?,python,Python,我见过人们使用猴子补丁来设置模块选项,例如: 导入mymodule mymodule.default_img=“/my/file.png” mymodule.view\u default\u img() 例如,Django在整个Django应用程序中都有settings.py,它总是让我有点恼火 管理模块配置设置的其他方法有哪些?推荐什么?似乎通常没有很好的方法来设置模块级配置 显然,完全避免配置是目前为止最可取的,而且通常最好使用类,或者将参数传递给函数。但有时你无法避免使用某种设置,有时仅仅

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

导入mymodule
mymodule.default_img=“/my/file.png”
mymodule.view\u default\u img()

例如,Django在整个Django应用程序中都有settings.py,它总是让我有点恼火

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

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

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

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

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

    setting1 = config1
    setting2 = config2
然后在导入模块中

import foo

foo.configure(42, 'bar')

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

就个人而言,我认为最糟糕的方法是使用django这样的设置文件。但是+1用于提到ConfigParser。实际上,我可能没有很好地回答我的问题。当我说“模块的配置设置”时,我的意思是在Python中。因此,也许有一个更好的问题:导入模块时,在Python中,在运行时设置模块级状态/参数的最佳方法是什么?例如,当您实例化一个类时,设置类级状态的一种常用python方法是使用init函数的参数。模块的init函数是什么?更重要的是(因为可以像init函数一样将运行时代码直接放在模块中),如何将参数传递给模块的“init”函数?@bryhoyt我认为您所描述的几乎是我介绍的三个选项中的第二个。