Вы могли видеть код, похожий на приведенный ниже пример, где вам нужно использовать несколько операторов if-else внутри вашей программы для выполнения различных задач в зависимости от типа параметра или условия. Этот шаблон вскоре становится утомительным, когда количество условий и функций задачи начинает расти.
Однако есть лучший способ справиться с такими шаблонами, избегая написания нескольких условий if и вызывая разные функции. Python@functools.singledispatch
помогите создать универсальную функцию, состоящую из нескольких функций, реализующих одну и ту же операцию для разных типов. Какие функции следует использовать во время вызова, определяется алгоритмом отправки. Пожалуйста, обратитесь к PEP 443 для более подробной информации.
давайте посмотрим на его вывод, когда мы выполним приведенную выше программу.
Теперь попробуем провести рефакторинг программы Python@functools.singledispatch
давайте посмотрим на его вывод, когда мы выполним приведенную выше программу.
Вы можете дополнительно реорганизовать приведенную выше программу, заменив имя функции на _
, потому что вызываемая функция определяется типом параметра, например, int, float, str, list и т. д.
Вы также можете использовать сложные типы данных Python@functools.singledispatch
, такие как классы.
Вывод при выполнении вышеуказанной программы.
Ссылка :