Python вызывает эти ' значения аргументов по умолчанию '.Это очень простая форма перегрузки функции (перегрузка на ' arity ' (т.е. сколько аргументов имеет функция)).Это так же сложно, как вы можете сделать с перегрузкой функций в Python.
Из-за комбинации желания сохранить язык довольно простым и того факта, что переменные Python имеют только тип во время выполнения, Python не может перегружатьпо типу.Если хотите, вы можете использовать isinstance
, чтобы свернуть собственную перегрузку, но полученный код довольно грязный, и я бы не рекомендовал его.
В других языках также есть аргументы по умолчанию.C ++, например, также допускает использование аргументов по умолчанию, а C ++ явно рассматривает аргументы по умолчанию как форму перегрузки функции.
Одна вещь, которая отличается от аргументов Python по умолчанию и отличается от C ++, состоит в том, что Python имеет именованные аргументы, что означаетявное переопределение определенного значения по умолчанию без переопределения других.
Например:
def foo(bar, baz="A baz", qux=0):
return "(%r, %r, %r)" % (bar, baz, qux)
foo(5)
(5, 'A baz', 0)
foo(5, qux=2)
(5, 'A baz', 2)
Существуют и другие языки, которые допускают это.Я полагаю, например, что это то, что Ruby допускает, хотя я не уверен, что такое синтаксис.
Наконец, Python, как ни странно, имеет перегрузку операторов.Это осуществляется с помощью функций со специальными зарезервированными именами , которые являются частью класса.Такие функции всегда имеют вид __name__
.Правила того, как именно перегрузка операторов работает в случае любого отдельного оператора, могут быть немного странными, и я бы вообще рекомендовал не использовать эту функцию в большинстве случаев, особенно для перегрузки числовых или реляционных операторов.