在Python中没有像C++那样直接的函数重载(Function Overloading), C++ 允许你定义多个同名函数,只要它们的参数列表(参数类型、参数数量或参数顺序)不同即可。

编译器会根据传入的参数类型自动选择正确的函数版本。

Python 采取了一种不同的方式来处理类似的需求:

1.默认参数

在 Python 中你可以给函数的参数设置默认值,这样在调用函数时就可以选择性地省略这些参数

def pow(base, exp , mod = None):
    """
    计算模下的base的exp次幂,如果mod不为None,则计算模mod的结果。
    """
    if mod == None:
        return base ** exp
    else:
        return (base ** exp) % mod
print(pow(1,2))
print(pow(2,3,5))

这里就为我们展示了默认参数的例子

2.可变参数

Python可以使用 *arge 来接受任意数量的位置参数使用,**kwargs 来接受任意数量的关键字参数

def my_function(*args):
    if len(args) == 1:
        print(f"一个参数: {args[0]}")
    elif len(args) == 2 and isinstance(args[0], int) and isinstance(args[1], int):
        print(f"两个整数参数: {args[0]}{args[1]}")
    elif len(args) > 2:
        print(f"多个参数: {args}")
    else:
        print("没有参数")
 
my_function()
my_function(10)
my_function(1, 2)
my_function("hello", "world", "!")

3.多态

Python 的一大特性是多态。由于 Python 是动态类型语言,函数在被调用时并不关心参数的具体类型,只要对象支持所需的操作即可。例如,你可以定义一个函数来处理任何可迭代对象

def process_data(data):
    for item in data:
        print(item)
 
process_data([1, 2, 3])      # 列表
process_data("hello")       # 字符串
process_data((4, 5, 6))     # 元组