在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)) # 元组