应用程序的默认设置

2024-06-28 20:50:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道ruby的settingslogic-gem。这允许非常优雅地定义应用程序的默认设置或回退设置,如settingslogic example中所述。你知道吗

我正在通读PyYaml,但还没有找到这么好的方法。你知道吗

你如何用优雅的方式解决这个问题?你知道吗


Tags: 方法应用程序gem定义example方式pyyamlruby
1条回答
网友
1楼 · 发布于 2024-06-28 20:50:49

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

但是如果您查看链接到的内容,库中实际上根本没有任何逻辑;应用程序逻辑代码必须使用||=来设置缺少的值。在Python中也可以做同样的事情;只是拼写不同而已。你知道吗

在Ruby中,如果您想在缺少键时出现异常,可以使用dot access;如果您想使用nil,可以使用方括号;如果您想使用不同的默认值,可以使用方括号加上||;如果您想设置并返回不同的默认值,可以使用有点老套但惯用的方括号加上||=。你知道吗

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

>> settings.messaging['queue_name'] ||= 'user_mail'
=> "user_mail"

…在Python中是这样的:

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

相关问题 更多 >