[英]pythonic way: vars in dict
嗨,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)
还是您认为最好的方法是不将设置变量包装在字典中?
我当然不是Pythonic方面的专家,但是我认为这很糟糕。
使用一个对象或一个命名的tuple或其他东西。 在我看来,字典访问语法对于诸如设置之类的东西不是很好。
将设置(实际上是键值对)存储在字典中绝对可以(这可能是实现此目的的最佳方法)。 如您的示例所示,您的代码变得更短,更易于理解。
Django将其设置存储在字典中。
mod_wsgi将请求环境(标头)存储在字典中,它们是实际设置。
os.environ
是一本字典。
可以使用dict或类似dict的对象进行设置(您可能想改用一些自定义的不可变dict样的对象,但是无论如何...),就像任何自定义“设置”对象FWIW一样(提示:Python对象是主要是赞美的命令...)。
wrt /您的函数调用,没有一个万能的答案。 第一个版本“更好”,因为它更加分离(不依赖于您的设置,无需假设定义了哪些设置等)),并且更加明确,但是某些代码确实与应用程序的设置相关联,因此它可能使传递整个“设置” dict-or-object或提供一种检索它的方式更有意义。
我认为字典是可以的,如果您想将设置写入人类可读文件,则可以使用标准库中的configparser: http ://docs.python.org/2/library/configparser.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.