Python. Урок 6. Работа с IPython и Jupyter Notebook
![]()
IPython представляет собой мощный инструмент для работы с языком Python. Базовые компоненты IPython – это интерактивная оболочка для с широким набором возможностей и ядро для Jupyter. Jupyter notebook является графической веб-оболочкой для IPython, которая расширяет идею консольного подхода к интерактивным вычислениям.
Основные отличительные особенности данной платформы – это комплексная интроспекция объектов, сохранение истории ввода на протяжении всех сеансов, кэширование выходных результатов, расширяемая система “магических” команд, логирование сессии, дополнительный командный синтаксис, подсветка кода, доступ к системной оболочке, стыковка с pdb отладчиком и Python профайлером.
IPython позволяет подключаться множеству клиентов к одному вычислительному ядру и, благодаря своей архитектуре, может работать в параллельном кластере.
В Jupyter notebook вы можете разрабатывать, документировать и выполнять приложения на языке Python, он состоит из двух компонентов: веб-приложение, запускаемое в браузере, и ноутбуки – файлы, в которых можно работать с исходным кодом программы, запускать его, вводить и выводить данные и т.п.
Веб приложение позволяет:
- редактировать Python код в браузере, с подсветкой синтаксиса, автоотступами и автодополнением;
- запускать код в браузере;
- отображать результаты вычислений с медиа представлением (схемы, графики);
- работать с языком разметки Markdown и LaTeX.
Ноутбуки – это файлы, в которых сохраняются исходный код, входные и выходные данные, полученные в рамках сессии. Фактически, он является записью вашей работы, но при этом позволяет заново выполнить код, присутствующий на нем. Ноутбуки можно экспортировать в форматы PDF, HTML.
Установка и запуск
Jupyter Notebook входит в состав Anaconda. Описание процесса установки можно найти в первом уроке. Для запуска Jupyter Notebook перейдите в папку Scripts (она находится внутри каталога, в котором установлена Anaconda) и в командной строке наберите:
> ipython notebook
В результате будет запущена оболочка в браузере.

Примеры работы
Будем следовать правилу: лучше один раз увидеть… Рассмотрим несколько примеров, выполнив которые, вы сразу поймете принцип работы с Jupyter notebook.
Запустите Jupyter notebook и создайте папку для наших примеров, для этого нажмите на New в правой части экрана и выберите в выпадающем списке Folder.

По умолчанию папке присваивается имя “Untitled folder”, переименуем ее в “notebooks”: поставьте галочку напротив имени папки и нажмите на кнопку “Rename”.

Зайдите в эту папку и создайте в ней ноутбук, воспользовавшись той же кнопкой New, только на этот раз нужно выбрать “Python [Root]”.

В результате будет создан ноутбук.

.
Код на языке Python или текст в нотации Markdown нужно вводить в ячейки:
![]()
Если это код Python, то на панели инструментов нужно выставить свойство “Code”.

Если это Markdown текст – выставить “Markdown”.

Для начал решим простую арифметическую задачу: выставите свойство “Code”, введите в ячейке “2 + 3” без кавычек и нажмите Ctrl+Enter или Shift+Enter, в первом случае введенный вами код будет выполнен интерпретатором Python, во втором – будет выполнен код и создана новая ячейка, которая расположится уровнем ниже так, как показано на рисунке.

Если у вас получилось это сделать, выполните еще несколько примеров.

Основные элементы интерфейса Jupyter notebook
У каждого ноутбука есть имя, оно отображается в верхней части экрана. Для изменения имени нажмите на его текущее имя и введите новое.

Из элементов интерфейса можно выделить, панель меню:
![]()
![]()
и рабочее поле с ячейками:

Ноутбук может находиться в одном из двух режимов – это режим правки (Edit mode) и командный режим (Command mode). Текущий режим отображается на панели меню в правой части, в режиме правки появляется изображение карандаша, отсутствие этой иконки значит, что ноутбук находится в командном режиме.

Для открытия справки по сочетаниям клавиш нажмите “Help->Keyboard Shortcuts”

В самой правой части панели меню находится индикатор загруженности ядра Python. Если ядро находится в режиме ожидания, то индикатор представляет собой окружность.

Если оно выполняет какую-то задачу, то изображение измениться на закрашенный круг.
Запуск и прерывание выполнения кода
Если ваша программа зависла, то можно прервать ее выполнение выбрав на панели меню пункт Kernel -> Interrupt.
Для добавления новой ячейки используйте Insert->Insert Cell Above и Insert->Insert Cell Below.
Для запуска ячейки используете команды из меню Cell, либо следующие сочетания клавиш:
Ctrl+Enter – выполнить содержимое ячейки.
Shift+Enter – выполнить содержимое ячейки и перейти на ячейку ниже.
Alt+Enter – выполнить содержимое ячейки и вставить новую ячейку ниже.
Как сделать ноутбук доступным для других людей?
Существует несколько способов поделиться своим ноутбуком с другими людьми, причем так, чтобы им было удобно с ним работать:
- передать непосредственно файл ноутбука, имеющий расширение “.ipynb”, при этом открыть его можно только с помощью Jupyter Notebook;
- сконвертировать ноутбук в html;
- использовать https://gist.github.com/ ;
- использовать http://nbviewer.jupyter.org/.
Вывод изображений в ноутбуке
Печать изображений может пригодиться в том случае, если вы используете библиотеку matplotlib для построения графиков. По умолчанию, графики не выводятся в рабочее поле ноутбука. Для того, чтобы графики отображались, необходимо ввести и выполнить следующую команду:
%matplotlib inline
Пример вывода графика представлен на рисунке ниже.

Магия
Важной частью функционала Jupyter Notebook является поддержка магии. Под магией в IPython понимаются дополнительные команды, выполняемые в рамках оболочки, которые облегчают процесс разработки и расширяют ваши возможности. Список доступных магических команд можно получить с помощью команды
%lsmagic

Для работы с переменными окружения используется команда %env.

Запуск Python кода из “.py” файлов, а также из других ноутбуков – файлов с расширением “.ipynb”, осуществляется с помощью команды %run.

Для измерения времени работы кода используйте %%time и %timeit.
%%time позволяет получить информацию о времени работы кода в рамках одной ячейки.

%timeit запускает переданный ей код 100000 раз (по умолчанию) и выводит информацию среднем значении трех наиболее быстрых прогонах.

Информацию по остальным магическим командам можете найти здесь:
Интересные примеры ноутбуков, в которых довольно полно раскрыты возможности Jupyter Notebook можно найти в ресурсах, перечисленных ниже.
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
Раздел: Python Уроки по Python Метки: Python, Уроки Python
Python. Урок 6. Работа с IPython и Jupyter Notebook : 3 комментария
- Уведомление: Adopting IPython & Jupyter For Selenium Testing: Plan, Write, Validate Tests in Python | Shakuro
- Михаил Филиппов 17.01.2021 ” это интерактивная оболочка для с широким набором возможностей ”
после ДЛЯ пропало слово
Каким образом можно не выполнять заново код? [закрыт]
Закрыт. Этот вопрос необходимо уточнить или дополнить подробностями. Ответы на него в данный момент не принимаются.
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 3 года назад .
Есть код, который мы пишем в среде разработки. По ходу его формирования, на каждом этапе мы его «проверяем». На выполнение сложных программ у нас уходит много времени, потому что выполнение файла происходит с самого начала. Если мы рассматриваем обработку данных, следует на определенном этапе сохранять изменения в новый файл и уже после этого начинать работать с ним?
Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 7 авг 2020 в 15:31
D.Vinogradov D.Vinogradov
1,411 7 7 серебряных знаков 19 19 бронзовых знаков
Не понял, что значит на каждом этапе мы его «проверяем». Кто мы? Что значит «проверяем»?
7 авг 2020 в 15:33
Ни че го не понял. (
7 авг 2020 в 15:43
Я так понимаю, что речь идет о системе контроля версий типа Git . Но это чисто домыслы, из вопроса не понятно, что автор в результате хочет
7 авг 2020 в 15:53
@dlm0n , кто мы? Мы это значит я, либо тот у кого возник такой же вопрос. Проверяем — значит, когда ты пишешь код, то ты его запускаешь на некоторых этапах. Или ваш код в сотни строк без ошибок и проверок пишется на раз два?)
7 авг 2020 в 17:08
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
модульностью. пишешь часть логики в одном модуле. который формирует результат. потом пишешь второй, который используя результат первого выполняет еще работу. pickle, поможет тебе сохранять состояние объектов.
что еще? готовые заранее наборы данных разложить по файлам, каждую работу разбить на методы. написать тесты (unittest) под каждый метод, кадждому методу передать часть данных необходимую для тестирования. как мне кажется самый хороший вариант.
Отслеживать
ответ дан 7 авг 2020 в 16:00
2,677 5 5 серебряных знаков 13 13 бронзовых знаков
Можно воспользоваться ipython либо в «чистом» виде, либо в виде Jupyter Notebook , что ещё удобнее. В Jupyter Notebook можно выполнять отдельные «ячейки» с кодом, причём в произвольном порядке. Состояние переменных при этом сохраняется в памяти. Можно пробовать запускать разные куски кода, не запуская при этом весь код «с нуля». Дописать на ходу код и запустить его с текущим состоянием памяти и переменных. Для исследовательских целей и чтобы разобраться как что-то работает, попробовать всякое, это очень удобно. Посмотреть и попробовать, как это выглядит, можно, например, в Google Colab.
Отслеживать
ответ дан 7 авг 2020 в 16:33
67.8k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
Про Юпитер думал, но в нем не очень удобно работать. Спасибо за идею!
7 авг 2020 в 17:02
кажется PyCharm это умеет
7 авг 2020 в 17:37
@alex в нем и работаю
7 авг 2020 в 18:00
ну так ставишь брик поинт и после остановки переходишь на вкладку консоль в окне отладчика, где можно активировать (или включить автоматическую активацию в параметрах запуска) пайтон промпт и писать код прям на лету. после чего можно продолжить выполнение. так же запуск до курсора есть и возможность отправить в пайтон консоль любой выделеный участок кода. не знаю инструмента лучше)
Руководство для начинающих о том, как сделать Jupyter Notebook быстрее, мощнее и круче
Magic — это отличные команды, упрощающие нашу жизнь при решении определенных задач. Часто похожи на команды Unix, но реализованы на Python. Магических команд в Python великое множество!
Существует 2 типа магических команд: строчные (применяются к одной строке) и ячеечные (применимы ко всей ячейке). Строчные команды начинаются с символа % , а ячеечные — с двух %% . Просмотреть все доступные команды можно через:
%lsmagic
Установка среды
Через %env вы можете управлять переменными среды в блокноте без перезагрузки. Для вывода списка всех имеющихся переменных в среде достаточно выполнить эту команду без переменных.
Вставка кода
С помощью %load можно добавлять код из внешнего скрипта (более подробно см. ниже). Например:
%load basic_imports.py
берет файл basic_imports.py и загружает его в блокнот.
Экспорт содержимого ячейки
Это невероятно полезная опция. %%writefile позволяет экспортировать содержимое ячейки в любое время и с минимальными усилиями. Например,
%%writefile thiscode.pyЗдесь вы пишите какой-то код или функцию,
которые хотите экспортировать
и, возможно, использовать в дальнейшем!
Случалось ли вам в каждом документе импортировать одно и то же или добавлять те же самые функции? Теперь вы можете написать код один раз и пользоваться им всюду!
К примеру, можно создать файл basic_imports.py , содержащий следующий код:
%writefile basic_imports.pyimport pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Так вы создадите .py файл, в котором будет перечислен основной импорт.
Загрузить его можно через:
%load basic_imports.py
Выполнение данной команды заменяет содержимое ячейки загруженным файлом.
# %load imports.pyimport pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Теперь можно еще раз запустить ячейку, чтобы импортировать все нужные модули и начать работу.
Сохранение и повторное использование кода через %macro
Вам, как и большинству людей, не раз приходилось прописывать одно и то же. Это могут быть и часто вычисляемые уравнения, и регулярно создаваемые строки кода. В Jupyter можно сохранять фрагменты кода в виде исполняемых макросов. Макрос — это просто код. Поэтому он может содержать переменные, которые необходимо определять до выполнения. Давайте попробуем!
name = ‘Kitten’
Для определения макроса нужен какой-то код. Мы можем сохранить почти что угодно: будь то строка, функция или что-то другое.
print(‘Hello, %s!’ % name)Hello, Kitten!
Настраивать повторно используемые макросы мы будем через магические команды %load и %macro . Названия макросов принято начинать с двойного подчеркивания — так они отличаются от других переменных.
%macro -q __hello_you 32
Магическая команда %macro принимает имя и номер ячейки (или номера). Для большей лаконичности кода мы передаем –q . %store позволяет сохранять любую переменную для использования в других сеансах. В примере выше передавалось имя созданного макроса. Таким образом, мы сможем пользоваться им в других блокнотах или при отключении ядра.
Для загрузки макроса достаточно выполнить следующую команду:
%load __hello_you
А для выполнения макроса можно просто запустить ячейку с именем макроса.
__hello_youHello, Kitten!
Давайте изменим переменную, которая использовалась в макросе.
name = ‘Muffins’
Теперь при запуске макроса берется это измененное значение.
__hello_youHello, Muffins!
Все работает, поскольку макросы выполняют сохраненный код в области ячейки. Если бы не было определено name , то мы бы увидели ошибку.
Хотите пользоваться одинаковым макросом во всех блокнотах?
Магическая команда store
%store позволяет хранить макрос и пользоваться им во всех блокнотах.
Попробуйте открыть новый блокнот и повторить пример с %store -r __hello_you .
%store -r __hello_you
name = ‘Rambo’
%load __hello_youHello, Rambo!
Магическая команда run
Команда %run выполняет код и отображает любой вывод, включая графики Matplotlib. С этой командой можно выполнять даже целые блокноты.
%run способен выполнять Python-код из .py-файлов. А еще он подходит для выполнения других блокнотов Jupyter.
Магическая команда pycat
%pycat покажет вам содержимое скрипта, если вдруг вы забыли, что в нем находится.
%pycat basic_imports.py
Автосохранение
Магическая команда %autosave позволяет изменять частоту автосохранения блокнота в его файл контрольных точек.
%autosave 60
Команда выше реализует автосохранение каждые 60 секунд.
Отображение графиков
%matplotlib inline
Скорее всего, вы и так знаете, что %matplotlib inline отображает графики Matplotlib в выводе ячейки. То есть вы можете добавлять графики и диаграммы Matplotlib напрямую в сами блокноты. Логичнее будет запустить эту команду в начале блокнота — в самой первой ячейке.
Управление временем
Существует две магические команды iPython для управления временем — %%time и %timeit . Они полезны тогда, когда код выполняется медленно, и вы пытаетесь отыскать причину. Обе команды имеют строковые и ячеечные режимы.
В отличие от %time , %timeit многократно запускает код и вычисляет среднее значение.
%%time дает информацию о единичном запуске кода в ячейке.
%%timeit использует Python-модуль timeit, который выполняет выражение несколько раз, а затем выдает среднее значение. Количество выполнений задается через –n , а количество повторений — через -r .
Выполнение кода из другого ядра
Вы можете выполнять ячейку на определенном языке. Существуют расширения для нескольких языков. Например:
- %%bash
- %%HTML
- %%python
- %%python2
- %%python3
- %%ruby
- %%perl
- %%capture
- %%javascript
- %%js
- %%latex
- %%markdown
- %%pypy
Например, для рендеринга HTML в блокноте выполните следующее:
%%HTML
This is really neat!
Либо воспользуйтесь напрямую LaTeX через:
%%latex
This is an equation: $E = mc²$
Магическая команда who
Команда %who без аргументов выдает перечень переменных, существующих в глобальной области видимости. При передаче параметра (например, str ) перечисляются переменные только этого типа. Так что если написать:
%who str
Магическая команда prun
%prun показывает количество времени, которое программа тратит на каждую функцию. %prun statement_name выводит упорядоченную таблицу с информацией о количестве вызовов каждой внутренней функции внутри оператора, времени каждого вызова, а также среднем времени всех запусков функции.
Магический отладчик в Python
В Jupyter есть собственный интерфейс для отладчика. С ним вы можете зайти в тело каждой функции и посмотреть, что там происходит. Активировать опцию можно через запуск %pdb в начале ячейки.
Графики в высоком разрешении
Одна простая строка магической команды iPython способна вывести график в двойном расширении для дисплеев Retina. Однако на прочих экранах ничего не отобразится.
%config InlineBackend.figure_format =’retina’
Пропуск ячейки (без выполнения)
В начале ячейки добавьте %%script false
%%script falseЗдесь может быть длинный
код, который вы пока
что не хотите выполнять
Уведомления
Это настоящий лайфхак для Python при запуске кода с длительным временем выполнения. Если вы не готовы провести весь день перед экраном компьютера, но хотите узнать о завершении выполнения кода, то можно настроить для этого звук-уведомление.
Для Linux (и Mac)
import os
duration = 1 # секунды
freq = 440 # Hz
os.system(‘play — no-show-progress — null — channels 1 synth %s sine %f’ % (duration, freq))
Для Windows
import winsound
duration = 1000 # миллисекунды
freq = 440 # Hz
winsound.Beep(freq, duration)
Для работы уведомления потребуется sox . Установить sox можно через:
brew install sox
…при условии, что у вас уже установлен менеджер пакетов Homebrew.
А теперь пора веселья!
Вы познакомились с набором полезных подсказок и советов по оптимизации Jupyter Notebook. Этой информации должно хватить на начальных этапах работы с оболочкой.
15 фишек IPython, которые сделают вашу жизнь проще

Часто код на Python приходится писать «на коленке» для проверки разных гипотез Data Science. Чтобы это сделать быстро, используют Python REPL или более удобный IPython, который является минималистичным Jupyter Notebook в терминале. В этой статье мы дадим 15 полезных советов по использованию IPython. Читайте у нас: быстрый вызов документации функции, редактор кода без выхода из IPython, поиск функций, вывод переменных сессии, сохранение результатов в Python файле и многое другое.
1. Вывод документации
Это одна из полезных особенностей IPython, которую часто используют на практике. Она позволяет отобразить документацию по любой функции, классу, методу, модулю путем добавления знака ? в начале или в конце. С ее помощью не нужно искать в Интернете каких-то деталей, особенно если библиотеки хорошо задокументированы, например, стандартные библиотеки Python, Scikit-learn, Pandas, TensorFlow и др.
В обычном Python REPL тот же самый функционал достигается встроенной функцией help() . Но это выглядит многословно: нужно написать help, а потом объект заключить в скобки.
Код в IPython для вывода документации выглядит следующим образом:
In [1]: from itertools import chain In [2]: chain? Init signature: chain(self, /, *args, **kwargs) Docstring: chain(*iterables) --> chain object Return a chain object whose .__next__() method returns elements from the first iterable until it is exhausted, then elements from the next iterable, until all of the iterables are exhausted. Type: type Subclasses:
2. Вывод исходного кода
Помимо обычной документации, в IPython можно получить исходный код для некоторых функций, методов и классов. Она поможет узнать какие аргументы передаются, в каком порядке, их типы, возвращаемый объект и т.д. Правда, работает не для всех функций (но можно вместо этого использовать %edit , см. №3).
Пример вызова исходного кода в IPython для функции из Scikit-learn:
Signature: train_test_split(*arrays, **options) Source: def train_test_split(*arrays, **options): """Split arrays or matrices into random train and test subsets Read more in the :ref:`User Guide `. Parameters ---------- *arrays : sequence of indexables with same length / shape[0] ## Продолжение документации """ n_arrays = len(arrays) if n_arrays == 0: raise ValueError("At least one array required as input") ## Продолжение кода
3. Магическая команда для редактирования %edit
Когда требуется написать длинную функцию или класс, то используйте магическую команду %edit . Она откроет текстовый редактор, указанный в EDITOR в переменных среды. Там можно писать свой код, а после закрытия IPython выполнит его и вернет в виде строки. Это очень удобно, поскольку не нужно выходить из IPython и создавать новый файл.
Если вы вызовете %edit -p , то IPython попытается открыть редактор с тем же код, что был написан в последний раз использования %edit . Если же вы создали много правок, то вы можете к ним обращаться по номеру, введя %edit_NN , где NN — номер правки. Такие вызовы похожи на систему контроля версий git. Кроме того, с этой магической командой можно редактировать импортированные функции, для этого передайте ей эти функции в качестве аргумента, например, %edit func .
Пример кода для открытия редактора и обращение по номеру в IPython:
In [1]: edit -p IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py Editing. done. Executing edited code. hello – it is %edit Out[1]: "print('hello - it is %edit)\n" In [2]: edit _1 IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py Editing. done. Executing edited code. hello - this is a temporary file IPython version control at work Out[2]: "print('hello - this is a temporary file')\nprint('IPython version control at work :)')\n"
4. Поиск по шаблону
Если вы забыли имя какой-либо функции, то используйте поиск по шаблону с помощью знака * и вопросительный знака ? в конце или начале. Например, мы знаем, что у модуля os есть функция для создания директории, но забыли её точное название. Но припоминаем, что в названии содержится dir. Тогда в IPython нахождения всех функций с этим названием будет выглядеть так:
In [1]: import os In [2]: os.*dir*? os.__dir__ os.chdir os.curdir os.fchdir os.listdir os.makedirs os.mkdir os.pardir os.removedirs os.rmdir os.scandir os.supports_dir_fd
5. Отладчик кода
В IPython есть встроенный отладчик кода. Если у вас функция выбрасывает исключение, то с помощью отладчика кода можно проверить значения переменных. Для этого вызовете магическую кодманду %debug . Здесь не нужно ставить никаких breakpoint.
In [1]: from spool import foo In [3]: foo(6) ZeroDivisionError In [4]: %debug 4 if n > 5: 5 y *= -x ----> 6 return y / 0 7 return y ipdb> x 5 ipdb> y -15
6. Автоматическая отладка кода
Если вам нужно проводить отладку код на каждое исключение, то используйте магическую команду %pdb . Чтобы отключить введите ее повторно.
Пример использования отладчика кода с созданной функцией:
In [1]: %pdb Automatic pdb calling has been turned ON In [2]: from spool import foo In [3]: foo(6) --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) in ----> 1 foo(6) ZeroDivisionError: division by zero > spool.py(6)foo() 4 if n > 5: 5 y *= -x ----> 6 return y / 0 7 return y 8 ipdb> x 5 ipdb> y -15
7. Перезагрузка модулей с autoreload и aimport
Воспользуйтесь %autoreload для автоматической перезагрузки всех импортированных модулей или %aimport для конкретного модуля. По умолчанию Python не импортирует второй раз указанные функции, даже если вы перезапустите соответствующие ячейки. Если вы измените код этих функций, Python всё равно продолжит использовать версию с первым импортом.
Поэтому если вы пользуйтесь своим модулем, делает в нем правки, то можете в %aimport указать его в качестве аргумента. Либо перезагружать все с помощью %autoreload . В эту магическую команду можно передавать аргументы, как указано в документации.
In [1]: from spool import foo In [2]: foo() Out[2]: 'Hello' In [3]: %load_ext autoreload In [4]: %autoreload In [5]: foo() Out[5]: 'Bye'
8. Перезапуск предыдущей сессии
Возможно что-то важное вы запускали при предыдущем использовании IPython. И хотите снова посмотреть и запустить код из прошлой сессии, то введите команду %rerun ~1/ . Здесь ~1 означает первая сессия перед текущей, а / — выполнение всех строк. Можно и запустить и другие сессии или указать определенные строчки (в документации показаны примеры). Если в предыдущей сессии были исключения, то код выполнится именно до этого момента.
In [1]: a = 10 In [2]: b = a * 10 In [3]: b Out[3]: 100 # Выходим из IPython
In [1]: %rerun ~1/ === Executing: === a = 10 b = a * 10 b === Output: ===
9. Вывод предыдущих строк
Если вы забыли присвоить переменной значение, то используйте выражение var = _ . Здесь _ сохраняет вывод последней команды (это также работает в стандартном Python REPL). Результаты всех предыдущих команд сохраняются в переменных _1 (вывод первой команды), _2 (вывод второй команды) и т. д.
In [1]: sum(range(100)) Out[1]: 4950 In [2]: s = _ In [3]: s Out[3]: 4950 In [4]: sum(range(200)) Out[4]: 19900 In [5]: _ Out[5]: 19900 In [6]: _1 Out[6]: 4950
10. Как вывести все переменные
Вы можете получить список всех переменных из текущей сессии, включая типы данных и их значения с помощью команды %whos .
Вот так выглядит вывод всех переменных в IPython:
In [1]: a = 10 In [2]: b = ‘great’ In [3]: def foo(n): . return n In [4]: class Bar: . pass In [5]: b = Bar() In [6]: %whos Variable Type Data/Info ——————————— Bar type a int 10 b Bar foo function
11. Очистить от отступов и знаков REPL
Если вы копируете код и вам нужно убрать неправильно заданный отступ или символы «>>>» из REPL, то чтобы не редактировать вручную просто скопируйте код и выполните %paste . IPython вставит код из буфера обмена, исправит отступы и/или удалит символы «>>>».
Например, вставим код, который мы использовали из прошлой статьи по форматированию строк f-string в Python:
In [1]: %paste >>> text = 'world' >>> 'Hello, %s' % text >>> 'Hello, <>'.format(text) >>> f'Hello, ' 'Hello, world' ## -- End pasted text -- Out[1]: 'Hello, world'
12. Выполняйте код при запуске IPython
Если вы хотите выполнить какой-то код каждый раз при запуске IPython, просто создайте новый файл в папке автозагрузки (~/.ipython/profile_default/startup/) и добавьте туда свой код. IPython автоматически выполнит любые файлы, найденные в этой папке. Это удобно, если вы хотите импортировать некоторые модули, которые используете постоянно. Не рекомендуем помещать туда много кода, поскольку время запуска IPython будет медленнее, но рекомендуем использовать профили, о чем дальше.
13. Используйте разные профили
Возможно, у вас есть набор модулей, которые вы хотите импортировать, и настройки, которые нужно установить в конкретной ситуации. Например, сейчас вы сосредоточены на задачах машинного обучения (machine learning) и вам нужна библиотека Scikit-learn, Pandas, NumPy или нужна еще визуализация с Matplotlib. Тогда создайте под каждую задачу разные профили, в котором можно импортировать при запуски библиотеки.
Профили похожи на разные учетные записи пользователей для IPython — каждый из них имеет свой собственный файл конфигурации и папку автозагрузки. Ищите созданные профили в папке ~/.ipython.
Для создания профиля в командой строке, выполните команду:
ipython profile create profilename
где вместо profilename выберите свое название профиля.
А для запуска укажите его в аргументе — profile :
ipython --profile=profilename
14. Делитесь свои кодом
Если вы хотите поделиться своим кодом с кем-то, используйте магическую команду %pastebin и укажите номер строк, которые нужно показать. IPython создаст pastebin (что-то похожее на GitHub gist), вставит выбранные строки и вернет ссылку, которую вы можете кому-то отправить. Учтите, что срок действия истекает через 7 дней.
In [1]: a = 10 In [2]: b = a * 90 In [3]: c = 100 In [4]: %pastebin 1-2 Out[4]: 'http://dpaste.com/3ZTUPFDGH'
15. Сохраняйте сессию в файл
Вы можете сохранить сессию в Python-файл с помощью команды %save . Это очень полезно, если у вас есть рабочий код и вы хотите продолжить с ним работать в текстовом редакторе, не копируя все строки и затем удаляя все In и Out.
Пример того, как сохранить сессию IPython в файл Python:
In [1]: a = 10 In [2]: b = a * 90 In [3]: c = 100 In [6]: %save my_file.py 1-3
Также смотрите в нашем видеоролике об основах работы с Jupyter Notebook:
А о том, как на практике решать прикладные задачах Data Science на языке Python вы узнаете на наших курсах в лицензированном учебном центре обучения и повышения квалификации Data Scientist’ов и IT-специалистов в Москве.