Python не выполняет перегрузку функций.Это является следствием того, что это язык со свободным шрифтом.Вместо этого вы можете указать неизвестное количество аргументов и разобраться с их интерпретацией в логике функции.
Есть несколько способов сделать это.Вы можете указать дополнительные необязательные аргументы:
def func1(arg1, arg2=None):
if arg2 != None:
print "%s %s" % (arg1, arg2)
else:
print "%s" % (arg1)
Вызывая его, мы получим:
>>> func1(1, 2)
1 2
Или вы можете указать неизвестное количество безымянных аргументов (т.е. аргументов, передаваемых в массиве):
def func2(arg1, *args):
if args:
for item in args:
print item
else:
print arg1
Вызывая его, мы получаем:
>>> func2(1, 2, 3, 4, 5)
2
3
4
5
Или вы можете указать неизвестное количество именованных аргументов (т.е. аргументов, передаваемых в словаре):
def func3(arg1, **args):
if args:
for k, v in args.items():
print "%s %s" % (k, v)
else:
print arg1
Вызывая его, мы получаем:
>>> func3(1, arg2=2, arg3=3)
arg2 2
arg3 3
Вы можете использовать эти конструкции для получения поведения, которое вы искали при перегрузке.