Проверка результата функции при нулевом значении параметра length

foo(0) вернёт пустой список []. abs(0) равен 0, а range(0) не содержит элементов, поэтому list comprehension не выполнит ни одной итерации.

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

Что ответить на собеседовании

foo(0) вернёт пустой список []. abs(0) равен 0, а range(0) не содержит элементов, поэтому list comprehension не выполнит ни одной итерации.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо вызвать функцию foo, задав ей длину 0. Нужно понять, какой список будет возвращён, когда параметр length равен 0.


def foo(length: int = 10) -> list[int]:
    is_minus = length < 0
    return [i if not is_minus else -i for i in range(abs(length)) if i % 2 == 0]

Ответ

foo(0) вернёт пустой список []. abs(0) равен 0, а range(0) не содержит элементов, поэтому list comprehension не выполнит ни одной итерации.

Значение is_minus будет False, но до выбора знака дело не дойдёт: исходная последовательность пуста.

print(foo(0))  # []

Ноль является чётным числом, однако здесь он не перебирается, потому что правая граница range исключается. Для включения нуля при length=0 потребовался бы другой диапазон, например range(abs(length) + 1), но это изменило бы поведение функции и для остальных граничных значений.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее