当前位置:   article > 正文

python怎么定义全局字典_一种Python全局配置规范以及其魔改

python 全局字典

0x01 模块 or global

很多初学者有个误区,就是在Python中需要配置一个全局的参数时,首先想到的是global关键字,而实际上global不是干这个事的,global的功能是在将局部作用域的变量声明为全局的,这样可以在局部修改全局的变量。

但这种用法其实非常不好,按照函数式的规范而言,纯函数的输入应该只由输入参数确定,不应该在执行过程中引用外部变量。并且,global也不是用来进行全局配置用的。

在Python中,模块是天然的单例,模块会在项目初始化后执行一次,之后一般不重复执行,符合单例模式的特点。因此,利用模块的这一特性,将整个工程文件中需要配置的选项都配置到一个模块中,在需要用的模块中通过import导入,才是Python中全局配置正确打开方式。

虽然这种规范已经在江苟(Django)等开源框架中展示了无数遍,但“如何在Python中设置全局变量”这个问题仍然是Python社区的月经贴。

通过模块配置全局变量的试例如下,在configs.py中定义CONFIG_A和CONFIG_B。在user.py中用import导入。

这个其实是Python中的基本操作了,本来是没啥好讲的,不过在这篇文章最后我展示了一种根据json配置的动态模块,供大家参考。

0x02 单例字典

在讲模块之前,我想谈谈我尝试过另一种方式,就是自定义单例字典,具体做法是这样的。

先继承collections模块中MutableMapping,并重写相关接口。这是在Python中自定义数据类型的基本操作了,自

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/515559
推荐阅读
相关标签
  

闽ICP备14008679号