如果 Python 不支持方法重载(除了 *args 和 **kwargs 或 PEP 3124 ),那么为什么这个重载有效?
# the sum from 1 to n
def sum(n):
if n > 0:
return n + sum(n - 1)
else:
return 0
print(sum(3))
# the sum from n to m, inclusive
def sum(n, m):
if n <= m:
return n + sum(n + 1, m)
else:
return 0
print(sum(3,5))
...虽然更令人费解,但这个并没有:
# the sum of elements in an array
def sumArray(A):
return sumArray(A, len(A)-1)
# a helper for the above
def sumArray(A, i):
if i < 0:
return 0
else:
return A[i] + sumArray(A, i-1)
print(sumArray([1,2,3]))
请您参考如下方法:
您没有重载。通过对不同的对象使用相同的名称,您将一件事隐藏在另一件事之后。尝试
sum = 42
然后看看 print(sum(3, 5)) 是如何停止工作的。
