在运行时设置默认值

Ric*_*ick 2 python

我管理着一个相当大的基于python的量子化学套件PyQuante.我目前正在努力设置各种默认设置,以便用户可以在运行时选择不同的选项.

例如,我有三种不同的计算电子排斥积分的方法.我们称他们为a,b,c.我过去只是选择我最喜欢的那个(比方说,c),并将其硬连接到计算这些积分的模块中.

我现在修改了它以使用包含所有这些硬线的模块Defaults.py.但这是在编译/安装时设置的.我现在希望用户能够在运行时覆盖这些选项,比如使用.pyquanterc.py文件.

在我的整体惯例中,我目前有类似的东西

from Defaults import integral_method
Run Code Online (Sandbox Code Playgroud)

我知道字典和.update()方法.但我不知道如何在现实生活中使用它.我的默认模块看起来像

integral_method = c
Run Code Online (Sandbox Code Playgroud)

我应该修改Defaults.py的结尾来查找.pythonrc.py文件并覆盖这些值吗?例如

if os.path.exists('$HOME/.pythonrc.py'): do_something
Run Code Online (Sandbox Code Playgroud)

如果是这样,应该做什么样的东西?

sth*_*sth 5

使用当前设置,用户可以非常轻松地更改脚本中的默认功能:

import Defaults
Defaults.integral_method = somefunc
Run Code Online (Sandbox Code Playgroud)

如果用户将此添加到他的脚本中,则使用integral_methodfrom的所有模块Defaults将用于somefunc计算积分.