【发布时间】:2017-02-10 18:04:25
【问题描述】:
我正在尝试在 Python 中运行模拟。为此,我需要定义一些参数并从中派生一些其他参数。然后,我使用这些函数调用几个函数,这些函数作用于这些参数并返回某个结果。目前我的代码看起来像这样
common(ai, bi, ..., hi):
# calculations
return ao, bo, ..., fo
func1(ai, bi, ..., xi):
ao, bo, ..., fo = common(ai, bi, ..., hi)
# calculations specific to func1
return y
func1(ai, bi, ..., xi):
ao, bo, ..., fo = common(ai, bi, ..., hi)
# calculations specific to func2
return z
ai = 0
bi = 1
...
xi = 2
print(func1(ai, bi, ..., xi))
print(func2(ai, bi, ..., xi))
我用... 缩写参数列表等,并在# calculations 部分执行计算。
我更喜欢使用func1(di=2) 调用函数,并为所有其他函数使用默认值。然而,这意味着使用命名参数,在这种情况下,我必须指定两次默认值(在func1 和func2 中)。我认为**kwargs 不会在这里工作,因为这需要显式传递默认值。
我一直在尝试将字典传递给函数并在传递之前设置非标准参数。然而,这使得函数调用更难理解,所以我觉得应该有一种更简单的方法来做到这一点。
由于函数只包含相对较长的方程,我不想像将它们存储在字典中并从那里调用它们时所需要的那样在变量名称中添加字符。这使得阅读方程式变得更加困难。
我的问题是是否有解决这个问题的pythonic方法。
【问题讨论】:
-
你尝试过抽象类吗?