Урок курса

Выполнение кода в ноутбуке

Jupyter Notebook с нуля: бесплатный курс

Запуск ячеек: способы и последовательность

Выполнение кода — центральная часть работы с ноутбуком. Рассмотрим несколько способов запуска ячеек и их особенности:

  • Shift+Enter: Выполнить текущую ячейку и перейти к следующей. Если следующей ячейки нет, будет автоматически создана новая снизу. Это самый часто используемый способ, позволяющий быстро пробежать по всему ноутбуку, выполняя ячейку за ячейкой.

  • Ctrl+Enter: Выполнить текущую ячейку и остаться на ней (фокус не переходит дальше). Полезно, если вы хотите несколько раз запустить одну и ту же ячейку.

  • Alt+Enter: Выполнить текущую ячейку и сразу создать под ней новую ячейку (в режиме редактирования). Удобно для быстрого продолжения работы: вы видите вывод только что выполненной ячейки и сразу получаете пустую ячейку для следующего шага.

  • Через меню или кнопку Run: Меню Cell -> Run Cells (или Run Cell and Select Below) делает то же, что Shift+Enter. Кнопка "Run" на панели инструментов по умолчанию эквивалентна Run and Select Below.

  • Выполнить всё подряд: Cell -> Run All запустит все ячейки в порядке сверху вниз. Полезно, чтобы повторно прогнать весь ноутбук, например после исправления кода в начале. Run All Above выполнит от начала до текущей ячейки, Run All Below – от текущей до конца.

При выполнении ячейки рядом с ней появляется номер (как мы видели "In [1]"), а во время выполнения рядом отображается In [*] (звёздочка вместо номера). Это означает, что код ещё выполняется. В это время вы можете отменить выполнение (меню Kernel -> Interrupt или кнопка "Interrupt kernel" – значок остановки). Если код завис или слишком долго выполняется, прерывание выручит.

Если ячейка Jupyter не запускается

Для быстрой проверки выберите ячейку типа Code, введите print(2 + 2) и нажмите Shift+Enter. Под ней должно появиться 4.

  • Если код оформился как текст, у ячейки тип Markdown. Переключите его на Code и запустите повторно.
  • Если стоит [*], ядро занято: эта ячейка выполняется либо ждёт предыдущую. Посмотрите, не запущен ли выше долгий цикл или input(), ожидающий ввода.
  • Если появляется ошибка о переменной, выполните ячейку, где она создаётся, а затем повторите запуск.
  • Если нет результата от x = 4, это нормально: присваивание само по себе ничего не печатает. Добавьте print(x).

Команды меню отличаются между версиями Notebook и JupyterLab. Ищите действие Run All Cells для выполнения всех ячеек сверху вниз. Перед перезапуском ядра сохраните ноутбук: значения переменных придётся вычислить заново.

Порядок выполнения и состояние kernel

Важная особенность Jupyter Notebook: состояние kernel (интерпретатора Python) хранится между запусками ячеек. Если в одной ячейке вы определили переменную, то в другой ячейке (даже находящейся ниже или выше) вы можете к ней обратиться после того, как первая была выполнена. Это позволяет разбивать код на логические блоки. Однако нужно быть осторожным с порядком выполнения.

Например, рассмотрим две ячейки:

  • Ячейка 1:

    x = 10

  • Ячейка 2:

    print(x)

Если вы сначала выполните ячейку 2 (которая печатает x), а затем ячейку 1 (которая присваивает x = 10), то вывод будет таким:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-...> in <module>
----> 1 print(x)
NameError: name 'x' is not defined

Вы получили ошибку, потому что на момент выполнения print(x) переменная x ещё не была определена (мы не запускали ячейку 1 до этого). Затем, выполнив ячейку 1, мы определили x, но вывод уже не пересчитался автоматически.

Если теперь снова выполнить ячейку 2 (print(x)), ошибок не будет, и вы увидите 10. Этот пример показывает: ячейки можно выполнять в произвольном порядке, но смысл имеет только тот порядок, в котором вы их запускали, а не расположение сверху вниз. Поэтому рекомендуется:

  • В начале работы запускать ячейки последовательно, сверху вниз, чтобы все переменные были определены.

  • Если вы запускали код вне порядка (например, вернулись и изменили что-то вверху), стоит воспользоваться Restart & Run All для чистоты эксперимента.

  • Обращать внимание на номера [ ]: если вдруг нижняя ячейка имеет номер выполнения меньше, чем верхняя, значит, вы выполнили её раньше.

Kernel — это "сердце" ноутбука. В меню Kernel доступны действия:

  • Interrupt (Прервать): остановить выполнение текущей операции (как Ctrl+C в терминале).

  • Restart (Перезапустить): полностью перезапустить интерпретатор Python. Все переменные, функции и модули забудутся, память очистится. Полезно, если вы хотите начать выполнение "с чистого листа" без перезапуска всего Jupyter.

  • Restart & Run All: сочетает перезапуск kernel и запуск всех ячеек подряд. Очень полезно, чтобы убедиться, что ваш ноутбук может выполняться с нуля без ошибок в правильном порядке (например, перед отправкой кому-то).

Вывод результатов и работа с выводом

Когда вы выполняете ячейку кода, Jupyter Notebook отображает вывод под этой ячейкой. Вывод может быть разного вида:

  • Текстовый вывод: результат работы программы в текстовой форме. Например, вызов print() выводит указанный текст, ошибки отображаются текстовым traceback. Вывод может быть многострочным.

  • Графический вывод: если код генерирует график (через Matplotlib) или изображение, оно будет показано прямо в ноутбуке (например, под ячейкой появится графическое окно).

  • Табличный вывод: объекты типа pandas.DataFrame и аналогичные отображаются как отформатированные таблицы (HTML-таблица) с заголовками столбцов, что удобно для просмотра данных.

  • “Богатый” вывод: ноутбук поддерживает вывод сложных объектов – можно отображать HTML-код, формулы, аудио, видео и интерактивные виджеты (о них позже). Это достигается с помощью специальных функций (например, из модуля IPython.display).

Особенности механизма вывода:

  • Если ячейка заканчивается каким-либо выражением (и это последняя строка ячейки, не присвоенная переменной), Jupyter автоматически выведет результат вычисления этого выражения. Например, ячейка:

    2 + 2

    после выполнения покажет под собой 4 – результат последнего выражения. Это поведение аналогично интерактивной оболочке IPython.

  • Если в ячейке несколько команд вывода или выражений, действуют правила:

    • Print: Каждый вызов print() отобразит свой текст на новой строке в порядке выполнения.

    • Автовывод последнего выражения: Только последнее неприсвоенное выражение в ячейке будет автоматически выведено. Например:

      2 + 2

    • 3 + 3

      при выполнении выведет только 6 (результат 3+3), а результат 2+2 не появится, потому что он не последний. Чтобы увидеть оба, нужно оба вывести через print() или объединить в одну структуру.

  • Выводы могут сочетаться: например, вы можете получить текстовый вывод (через print) и затем график. Они отобразятся один за другим под ячейкой.

Jupyter сохраняет вывод вместе с ноутбуком. Если вы сохраните ноутбук и закроете его, а потом откроете снова, под ячейками вы увидите старый вывод (тот, что был при последнем выполнении). Учтите, что этот вывод может быть неактуальным, если код или данные изменились и вы ещё раз не запускали ячейку. Поэтому часто полезно обновить вывод, перезапустив необходимые ячейки или весь ноутбук.

Вы можете очистить выводы (например, перед передачей ноутбука кому-то) через меню: Cell -> All Output -> Clear – это уберёт все текущие отображённые результаты, но код останется. При следующем выполнении они появятся заново.

Ограничение вывода: Если программа выводит очень большой объём текста или данных, Jupyter может замедлиться. Поэтому:

  • Большие тексты (сотни строк) автоматически сворачиваются в прокручиваемый блок, чтобы не занимать всю страницу.

  • Огромные таблицы (например, DataFrame с тысячами строк) тоже отображаются с прокруткой или усечённо (первые и последние несколько строк).

  • Постарайтесь избегать чрезмерного вывода – например, вместо вывода всей таблицы, посмотрите её размеры df.shape и первые строки df.head().

Задача 1

Расположите действия для «создать новую Markdown‑ячейку ниже текущей» в правильной последовательности:

Расположите элементы в правильном порядке

  1. 1.M
  2. 2.B
  3. 3.Esc
Без регистрации · результат не сохраняется

Задача 2

Какой режим активируется после нажатия Esc?

Выберите один вариант
Без регистрации · результат не сохраняется

Задача 3

Что произойдёт при нажатии Shift + Enter в ячейке кода?

Выберите все подходящие варианты
Без регистрации · результат не сохраняется

Продолжить с сохранением прогресса

Перейдите к уроку в учебном кабинете.

Перейти к интерактивному уроку