如何在 Python 中的不同模块上使变量全局化?

我有一个小项目,我需要最初引入和使用一些相当多的变量。


显然,我可以制作一些配置文件,在其中设置变量的所有值。我只制作了一些 Python 文件,我在其中给出了值:


value_a = 'something'

value_b = 'something'

value_c = 5.0

并调用文件conf.py。当我这样做时from conf import *,我已经初始化了所有变量的值。


尽管如此,我在项目中有不同的模块和不同的子程序(其中的方法),我希望conf.py在每个方法和每个模块中都知道所有这些值。


显然,我可以from conf import *在每个模块和/或import conf每个子程序中进行,但这是实现变量初始化的最佳方式吗?


烙印99
浏览 128回答 3
3回答

阿波罗的战车

使用您描述的模块是为脚本设置配置值的可行方法,但有几个原因可能会让您更好地使用其他方法。评论中的其他一些人指出,这import *是不赞成的,因为它使根命名空间与许多变量名称混在一起,使得意外发生名称冲突变得更加容易。conf.varname从组织的角度来看,将它们保留在模块名称下(例如:)有助于跟踪名称和防止冲突。如果您计划分发需要配置的代码,则使用.py模块会打开您的代码,以便对该文件中输入的任何内容进行任意代码执行。这是“.ini .json .cfg 等”文件非常有用的地方。作为使用通用格式(如 json)的额外好处,如果同事使用不同的语言但需要在同一个项目上工作,它可以使配置轻松移植到其他语言。在我的脑海中,python 包括.xml .json和.ini文件的库。

胡子哥哥

他概述的内容非常通用/便携且安全。由于import *是一个反模式,你可以很容易地做到import config然后引用它的值,如config.varname.我认为.py在需要时使用文件很好。Aaron 的观点很好,但只要配置由运行应用程序的人控制,就不存在安全问题。允许.py文件的主要原因是当某些配置项需要从其他配置项派生或在运行时查找/加载时。如果不需要那个(配置是 100% 平面和静态的),那么.json或者 Aaron 提到的另一种平面文件方法是最好的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python