无类重载



如何在python中用相同的名称和不同数量的参数编写多个函数,使函数的执行取决于参数的数量?我在Python 中执行以下程序时出错

def area(r):
a=3.14*r*r
return a
def area(l,b):
a=l*b
return a
print(area(710))
print(area(6,2))

在python中,函数重载是通过为参数提供默认值来完成的对于Instance,您可以在这里为参数b提供一个默认值(可能为"None"(,并相应地更改函数的其余部分

def area(a, b=None):
if b:
ans = a*b
else:
ans = (a*a)*3.14
return ans

如果你给它提供2个参数,这个函数就可以工作,输出将是矩形的面积,或者如果你只给它一个参数,它将返回圆形的面积

我认为这是一个开箱的用例。

def area(*values):
if len(values) == 1:
r = values[0]
return 3.14 * r ** 2
if len(values) == 2:
l, b = values
return l * b
raise ValueError("Takes only one or two arguments.")

在本例中,两个星号表示values将采用传递给area的所有位置参数。因此,如果您调用area(1)values将是[1],如果您呼叫area(1, 2, 3, 4)values将是[1, 2, 3, 4]等等。因此,您可以通过检查列表的长度来检查传递给函数的参数数量。然而,注意不要过度使用它,它可能会使代码有点混乱。。。

最新更新