繁体   English   中英

pythonic方式:dict中的vars

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM