КурсыИИМатематикаКодФизикаО проекте и вопросы

TwiddleLab / Код / Строим на Python

Функции, которые вызывают функции

Урок 9 из 12 · 7 мин · Бесплатно, без аккаунта

Что ты узнаешь

  • Декомпозиция: разбей большую задачу на маленькие именованные функции, которые вызывают друг друга.
  • Каждый вызов кладёт карточку на стек вызовов со своими коробками; return снимает её и несёт значение обратно.
  • Переменные внутри функции локальные: x в функции это другая коробка, чем x снаружи.
  • f(g(x)) сначала выполняет g, потом отдаёт его ответ f.

Начать урок

Как идёт урок

  1. Проверка пароля, написанная двумя способами. Найди проверку цифры в каждом.

    Нажми на строку, которая проверяет цифру. Секундомер засекает время.

  2. is_valid вызывает двух помощников. Какая функция закончит первой?

    Прочитай код и нажми на функцию.

  3. Пройди по шагам. Смотри на стопку карточек.

    Вызов кладёт карточку наверх. return снимает её.

  4. Декомпозиция и стек вызовов.

    Декомпозиция значит разбить задачу на маленькие функции с понятными именами. Каждая делает одно дело.

    Стек вызовов это стопка карточек. Вызов кладёт наверх новую карточку с коробками этой функции; return снимает верхнюю карточку и несёт значение вниз, вызвавшему.

    Коробки, созданные внутри функции, локальные: они живут на её карточке и исчезают при возврате.

  5. Поработай стеком сам.

    Перед каждым вызовом перетащи нужную карточку на стек. Перед каждым возвратом сними верхнюю.

  6. Собери is_valid из двух помощников.

    Пароль годится, если он достаточно длинный и в нём есть цифра. Расставь строки по порядку; пройдут четыре теста.

  7. Две машины-функции подряд. Найди x, чтобы верхняя цепочка дала 11.

    Внутренний вызов выполняется первым. Посмотри и на другой порядок.

  8. Испытание паролей: хакер атакует твою is_valid.

    Для каждого пароля нажми «пройдёт» или «не пройдёт», прежде чем сработает функция.

  9. Две коробки с именем x. Какую покажет print(x)?

    Программа на паузе внутри bump. Нажми на коробку, которую напечатает строка 6.

  10. Тизер: функция, которая вызывает сама себя.

    Сколько карточек будет на стеке в самый высокий момент? Поставь булавку и нажми «Запуск».

Предыдущий урок: Отладка как детектив · Следующий урок: Случайность и симуляция · Часть курса: Строим на Python

Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.

Loading TwiddleLab