2016-09-26 70 views
1

我想将脚本的代码功能分成一个新的模块。我想定义一些配置作为模块中的参数传递。然后,在模块中,我将此配置定义为全局。这是一个好习惯吗?有更好的解决方案吗?Python - 使模块方法变量成为全球最佳实践?

主脚本:

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 
+0

由于需要改进的工作代码属于Code Review,因此我正在投票结束此问题作为题外话题。 – Carcigenicate

+4

@Carcigenicate这将在CR上关闭,因为它是“示例代码” – Kaz

回答

2

,当我需要这类全局变量的什么我通常做的是使一个类,并定义它们在那里。因此,例如一个Configuration类,其中存储了值。

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

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