Вы могли видеть код, похожий на приведенный ниже пример, где вам нужно использовать несколько операторов if-else внутри вашей программы для выполнения различных задач в зависимости от типа параметра или условия. Этот шаблон вскоре становится утомительным, когда количество условий и функций задачи начинает расти.

Однако есть лучший способ справиться с такими шаблонами, избегая написания нескольких условий if и вызывая разные функции. Python@functools.singledispatchпомогите создать универсальную функцию, состоящую из нескольких функций, реализующих одну и ту же операцию для разных типов. Какие функции следует использовать во время вызова, определяется алгоритмом отправки. Пожалуйста, обратитесь к PEP 443 для более подробной информации.

давайте посмотрим на его вывод, когда мы выполним приведенную выше программу.

Теперь попробуем провести рефакторинг программы Python@functools.singledispatch

давайте посмотрим на его вывод, когда мы выполним приведенную выше программу.

Вы можете дополнительно реорганизовать приведенную выше программу, заменив имя функции на _, потому что вызываемая функция определяется типом параметра, например, int, float, str, list и т. д.

Вы также можете использовать сложные типы данных Python@functools.singledispatch, такие как классы.

Вывод при выполнении вышеуказанной программы.

Ссылка :

  1. https://docs.python.org/3/library/functools.html#functools.singledispatch
  2. https://peps.python.org/pep-0443/