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

时间:2016-09-26 15:33:30

标签: python python-2.7

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

主要脚本:

import myModule

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

myModule.execute(config)

模块:

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

1 个答案:

答案 0 :(得分:5)

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

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

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