以下是我想要做的示例。
def f(a, b, c):
if a == 'method1':
c = 0
return b + c
在此函数中,如果满足条件a='method1'
,则不需要参数c
。
不过,我可以使用 f(a='method1', b=1, c=2)
调用该函数,这与 f(a='method1', b=1,c=0)
。
解决此问题的方法是将参数c
默认设置为0
def f(a, b, c=0):
if a == 'method1':
c = 0
return b + c
现在我可以调用 f(a='method1',b=1)
,这正是我想要的。问题是,我仍然可以更改调用 f(a='method1',b=1,c=1)
中的参数 c
,这是我不想要的用户能够。
我可以在函数签名中而不是在正文中强制执行此条件吗(即我不想在正文中使用 if
)。或者如果还有其他更好的解决方案,请告知。
类似于
def f(a, b, c = 0 if a == 'method1', else c is required):
return b + c
提前致谢。
最佳答案
a
、b
和 c
均在运行时动态分配。您无法通过签名来弥补这一点。它需要在运行时进行检测,您也可以像在其他地方一样在 if
中进行检测。不过,您可以专注于函数名称级别,Python 将负责检测参数的数量。
def f(b,c):
return b + c
def f_method1(b):
return f(b, 0)
def f_method2(half_a_c):
return f(0, half_a_c*2)
关于python - 如果存在另一个参数则需要参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60510886/