Загружаем изображение…
Знаете, что Python умеет делать перегрузку функций по типу аргумента без if/elif?
Обычно ветвление по типам быстро превращается в нечитаемый код:
if isinstance(x, int): ...
elif isinstance(x, str): ...singledispatch позволяет зарегистрировать разные реализации функции для разных типов:
@process.register(int)
def _(x): return x * 2или:
@process.register(str)
def _(x): return x.upper()Теперь одна и та же функция ведёт себя по-разному в зависимости от типа входа:
process(10), process("hi")Это используется в сериализации, обработке событий, AST, CLI, плагинах и системах с расширяемой логикой.
singledispatch — это хороший способ избавиться от isinstance-цепочек и перейти к расширяемой архитектуре без переписывания кода.Python Ready | #совет
Просмотры: 198