嗨python程序员,
在我的脚本中我有一些设置变量,它们由函数生成并在dict中返回。 这些设置变量传递给多个函数。我正在尝试编写易于阅读的代码,所以我想知道您更喜欢哪种符号?
def fooA(a,b,c):
return a+b+c
def fooB(D,c):
return D['a']+D['b']+c
settings = { 'a':1, 'b':2 }
c = 3
print fooA(settings['a'],settings['b'],c)
print fooB(settings,c)
或者您认为最佳方法是不将设置变量包装在dict中吗?
答案 0 :(得分:2)
我当然不是Pythonic的专家,但我觉得这很糟糕。
使用对象或a named tuple或其他内容。在我看来,字典访问语法对于类似设置的东西并不是很好。
答案 1 :(得分:2)
在字典中存储设置(实际上是键值对)绝对可以(这可能是实现此目的的最佳方法)。正如您在示例中所示,您的代码变得更短,更容易理解。
Django将其设置存储在字典中。
mod_wsgi在字典中存储请求环境(标题),这是动作设置。
os.environ
是一本字典。
答案 2 :(得分:2)
使用dict或类似dict的对象进行设置是可以的(你可能想要使用一些自定义的不可变类似dict的对象,但无论如何......),就像任何自定义“设置”对象FWIW一样(提示: Python对象大多是美化的词汇......)。
wrt /你的函数调用,没有一个适合所有人的答案。第一个版本是“更好”,因为它更多的是解耦(不依赖于你的设置,没有假设定义了什么设置等))并且更明确,但是一些代码片段实际上与应用程序的设置相关联然后它可能会使更有意义的是传递整个“设置”dict-or-object或提供一种检索它的方法。
答案 3 :(得分:0)
我认为字典没问题,如果您想将设置写入人类可读文件,您可以使用标准库中的configparser:http://docs.python.org/2/library/configparser.html