Skip to main content
 首页 » 编程设计

python之如果 Python 不支持方法重载,那么为什么这个方法重载有效而另一个方法不支持

2025年05月04日27xiaohuochai

如果 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)) 是如何停止工作的。