foo(0) вернёт пустой список []. abs(0) равен 0, а range(0) не содержит элементов, поэтому list comprehension не выполнит ни одной итерации.
Проверка результата функции при нулевом значении параметра length
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), но это изменило бы поведение функции и для остальных граничных значений.