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