Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: overloading, signature

Можно ли перегружать функции в Python только за счет сигнатур?

Вопрос проверяет понимание того, как Python обрабатывает функции и чем он отличается от языков со статической типизацией.

Короткий ответ

В Python нельзя перегружать функции только по сигнатуре, как в Java или C++. Последнее объявление функции перезаписывает предыдущее. Для похожего поведения используют аргументы по умолчанию, проверку типов или functools.singledispatch. Это позволяет реализовать похожую логику, но другим способом.

Длинный ответ

Python не поддерживает перегрузку функций в классическом виде.

Определение:
Перегрузка функций (function overloading) — это возможность иметь несколько функций с одинаковым именем, но разными параметрами.

1. Почему это не работает

Пример:

def foo(x):
    return x

def foo(x, y):
    return x + y

В Python останется только вторая версия функции.

Причина:

  • функции являются объектами

  • имя просто указывает на последний объект

2. Как решают задачу на практике

Используют несколько подходов.

Аргументы по умолчанию

def foo(x, y=None):
    if y is None:
        return x
    return x + y

Проверка типов

def foo(x):
    if isinstance(x, str):
        return x.upper()
    return x * 2

singledispatch

from functools import singledispatch

@singledispatch
def func(x):
    raise NotImplementedError()

@func.register(int)
def _(x):
    return x * 2

3. Когда это важно

Это часто спрашивают на собеседованиях, потому что:

  1. Показывает понимание динамической типизации

  2. Показывает знание стандартной библиотеки

Вывод

В Python нет перегрузки функций по сигнатурам. Аналогичное поведение достигается через аргументы по умолчанию, проверки типов и singledispatch.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Python

    Python

Ключевые слова

#overloading

#signature

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.