在Python中使模块方法变量成为全局良好实践吗?

Bel*_*dar -3 python python-2.7

我想将脚本的代码功能分成新模块.我想定义一些配置作为该模块中的参数传递.然后,在模块中,我将此配置定义为全局.这是一个好习惯吗?有更好的解决方案吗?

主要脚本:

import myModule

config = {
    "foo1" : "bar1",
    "foo2" : "bar2",
    "foo3" : "bar3"
}

myModule.execute(config)
Run Code Online (Sandbox Code Playgroud)

模块:

def execute(config):
   global CONFIG
   CONFIG = config
   value1, value2 = handleRequest()
   print(value1)
   print(value2)

def handleRequest()
   value1 = doSomething(CONFIG["foo1"])
   value2 = doSomethingElse(CONFIG["foo2"])
   return value1, value2
Run Code Online (Sandbox Code Playgroud)

Mic*_*ers 5

当我需要这样的全局变量时,我通常做的是创建一个类并在那里定义它们.例如,具有存储在其中的值的Configuration类.

这具有以下优点(不是结束列表):

  • 类常量/变量'属于'更适用的东西(在这种情况下是配置).
  • 可以隐藏要计算的代码(即功能可以合并到同一个类中)
  • 名称冲突被阻止.
  • 如果将来需要制作多个配置实例,那么问题就不那么严重了.