什么是函数重载?简单的理解,支持多个同名函数的定义,只是参数的个数或者类型不同,在调用的时候,解释器会根据参数的个数或者类型,调用相应的函数。
重载这个特性在很多语言中都有实现,比如 C++、Java 等,而 Python 并不支持。这篇文章呢,通过一些小技巧,可以让 Python 支持类似的功能。
参数个数不同的情形
先看看这种情况下 C++ 是怎么实现重载的
#include <iostream>
using namespace std;
int func(int a)
{
cout << 'One parameter' << endl;
}
int func(int a, int b)
{
cout << 'Two parameters' << endl;
}
int func(int a, int b, int c)
{
cout << 'Three parameters' << endl;
}
如果 Python 按类似的方式定义函数的话,不会报错,只是后面的函数定义会覆盖前面的,达不到重载的效果。
>>> def func(a):
... print('One parameter')
...
>>> def func(a, b):
... print('Two parameters')
...
>>> def func(a, b, c):
... print('Three parameters')
...
>>> func(1)
Traceback (most recent call last):