Вложенный вызов f: двукратное удвоение строки ab

Будет выведено abababab. Внутренний вызов f('ab') даёт 'abab', а внешний ещё раз удваивает полученную строку.

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

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

Будет выведено abababab. Внутренний вызов f('ab') даёт 'abab', а внешний ещё раз удваивает полученную строку.

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

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

Условие

Что будет выведено в терминал в результате выполнения следующего кода?

def f(s): return s + s print(f(f('ab')))

Ответ

Будет выведено abababab. Внутренний вызов f('ab') даёт 'abab', а внешний ещё раз удваивает полученную строку.

Функция возвращает конкатенацию аргумента с самим собой. Сначала Python вычисляет аргумент внешнего вызова — результат внутреннего f. Затем выполняется второй вызов и только после этого print. Начальные две буквы превращаются в четыре, затем в восемь. Здесь нет рекурсии: функция f не вызывает себя в собственном теле, просто один вызов передан аргументом другому.

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

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

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

Подробнее