我试图找到一个干净的方法来处理不同的,互斥的函数输入。我的想法是,我有一个函数,它返回4个值(这些值通过数学方程链接),当你输入4个值中的一个时,它将返回所有值。在
目前该函数的工作方式如下:
#example relations are simply: b=1+a, c=0.5*a, d=sqrt(a)
def relations(v, vtype="a"):
if vtype=="a":
a = v
elif vtype=="b":
a = v - 1
elif vtype=="c":
a = 2 * v
elif vtype=="d":
a = v ** 2
b = 1 + a
c = 0.5 * a
d = a ** 0.5
return a,b,c,d
用户通过字符串vtype指定输入变量是什么,并返回所有值。用户不可能输入多个不同的输入值(这是多余的,因为所有未知量都可以从一个输入值中确定)。在
有没有更干净更像Python的方法来做这件事?用一个字符串指定输入变量目前感觉很不好。在
提前谢谢!在
可以使用可变关键字参数:
然后与命名参数一起使用:
^{pr2}$避免许多
if
-elif
的常用方法是构建函数字典:如果此函数不是瓶颈,则可以避免使用
^{pr2}$lambda
,只需执行以下操作:如果您不喜欢在函数签名中使用
vtype
的想法,可以使用一个**kwargs
参数:那就叫它:
您可以将vType定义为函数,并将函数作为参数传递
这样你就可以摆脱
if
/elif
。在相关问题 更多 >
编程相关推荐