1

嗨python程序员,

在我的脚本中,我有一些设置变量,它们由函数生成并在字典中返回。这些设置变量被传递给几个函数。我正在尝试编写易于阅读的代码,所以我想知道您更喜欢哪种表示法?

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)

还是您认为最好的方法不是将设置变量包装在字典中?

4

4 回答 4

2

在字典中存储实际上是键值对的设置是绝对可以的(这可能是实现这一点的最佳方式)。正如您在示例中所示,您的代码变得更短且更易于理解。

Django 将其设置存储在字典中。

mod_wsgi 将请求环境(标头)存储在字典中,它们实际上是设置。

os.environ是一本字典。

于 2013-11-04T10:40:13.327 回答
2

使用 dict 或类似 dict 的对象进行设置是可以的(您可能想要使用一些自定义的不可变的类似 dict 的对象,但无论如何......),就像任何自定义的“设置”对象 FWIW 一样(提示:Python 对象是主要是美化的听写......)。

wrt/你的函数调用,没有一刀切的答案。第一个版本“更好”,因为它更加解耦(不依赖于您的设置,不假设定义了哪些设置等)并且更明确,但是某些代码确实与应用程序的设置相关联,然后它可能会传递整个“设置” dict-or-object 或提供一种检索它的方法更有意义。

于 2013-11-04T10:52:26.573 回答
2

我当然不是 Pythonic 专家,但我认为这很糟糕。

使用一个对象,或一个命名的元组,或其他东西。在我看来,字典访问语法对于设置之类的东西不是很好。

于 2013-11-04T10:33:46.523 回答
0

我认为字典没问题,如果您想将设置写入人类可读文件,您可以使用标准库中的 configparser:http: //docs.python.org/2/library/configparser.html

于 2013-11-04T10:50:30.977 回答