Урок курса
Выполнение кода в ноутбуке
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" – значок остановки). Если код завис или слишком долго выполняется, прерывание выручит.
Порядок выполнения и состояние 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().
Попробуйте решить
Расположите действия для «создать новую Markdown‑ячейку ниже текущей» в правильной последовательности:
Продолжить с проверкой и прогрессом
Откройте интерактивный раннер с заданиями урока.
