Python 应用程序的默认设置

Python 应用程序的默认设置,python,python-3.x,yaml,pyyaml,Python,Python 3.x,Yaml,Pyyaml,我知道ruby的设置逻辑-gem。这允许以非常优雅的方式定义应用程序的默认设置或回退设置,如中所述 我正在通读PyYaml,但还没有找到这么好的方法 您将如何以优雅的python方式解决这样的问题?我不确定您为什么希望YAML解析库提供多层设置回退。Ruby的YAML解析库当然没有,这就是为什么会有单独的包装器gem,就像您首先提到的那样 但是如果你看一下你链接到的东西,你会发现图书馆里根本没有任何逻辑;应用程序逻辑代码必须使用| |=来设置缺少的值。你可以用Python做同样的事情;只是拼写不

我知道ruby的
设置逻辑-
gem
。这允许以非常优雅的方式定义应用程序的默认设置或回退设置,如中所述

我正在通读PyYaml,但还没有找到这么好的方法


您将如何以优雅的python方式解决这样的问题?

我不确定您为什么希望YAML解析库提供多层设置回退。Ruby的YAML解析库当然没有,这就是为什么会有单独的包装器gem,就像您首先提到的那样

但是如果你看一下你链接到的东西,你会发现图书馆里根本没有任何逻辑;应用程序逻辑代码必须使用
| |=
来设置缺少的值。你可以用Python做同样的事情;只是拼写不同而已

在Ruby中,如果您想在缺少的键上出现异常,可以使用点访问;如果您想设置并返回不同的默认值,可以使用括号加上
|
;如果您想设置并返回不同的默认值,可以使用括号加上
|

在Python中,如果希望在缺少键的情况下出现异常,可以使用括号,
get
如果希望
None
get
,如果希望设置并返回不同的默认值,可以使用带参数的
get
。所以,这个Ruby代码:

>> settings.messaging['queue_name'] ||= 'user_mail'
=> "user_mail"
…在Python中如下所示:

>>> settings['messaging'].setdefault('queue_name', 'user_mail')
user_mail

PyYaml是一个YAML解析库;为什么您希望它相当于一个Ruby多层设置库?