Продвинутые возможности

Магические команды IPython: обзор

Содержание курса

Некоторые полезные магические команды

Рассмотрим более систематически ряд магий и их применение:

  • Навигация и файлы:

    • %pwd – текущая директория.

    • %ls – содержимое директории. (%ls -l даст подробный список, как ls -l в Linux).

    • %cd new_dir – сменить текущий каталог на new_dir. В ноутбуке это влияет, куда будут сохраняться/искаться файлы. %cd .. – на уровень вверх.

    • %mkdir new_folder – создать новую папку (эквивалент shell-команды mkdir).

    • %rm file.csv – удалить файл (но будьте осторожны, безвозвратно).

  • Информация об окружении:

    • %who – покажет список всех переменных, определённых в текущем пространстве (типы не указывает, просто имена).

    • %whos – более подробный вывод: имена, типы, краткое представление значений (например, для массивов – размер).

    • %env – показать переменные окружения (OS environment variables). Можно использовать %env VAR=value для установки, и $$VAR в коде для подстановки (или os.environ).

  • Запуск внешнего кода:

    • %run script.py – выполнит Python-скрипт script.py как будто вы его запустили отдельным процессом, но в том же kernel. После выполнения в вашем ноутбуке будут доступны переменные и функции из этого скрипта.

    • %load script.py – просто загрузит текст файла script.py в ячейку. Удобно, чтобы быстро перенести код в ноутбук для выполнения или редактирования.

    • %%bash – (ячейчная магия) позволяет написать несколько строк команд Bash. Например:

      %%bash echo "Список файлов:" ls -l

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

    • Другие ячейчные магии: %%bash, %%sh – аналогично bash, %%time – засечь время выполнения всей ячейки, %%HTML – отобразить содержимое ячейки как HTML, %%latex – как LaTeX, %%writefile file.py – сохранить содержимое ячейки в файл.

  • Измерение производительности:

    • %time – замерить время выполнения одного выражения.

    • %timeit – замерить время выполнения с высокой точностью, выполняя код многократно (см. урок 5.2).

    • %%time / %%timeit – применимо к целой ячейке.

  • Отладка и профилирование:

    • %debug – войти в интерактивный режим отладки после исключения (подробнее в уроке 5.3).

    • %pdb – включить/выключить автодоводчик при ошибках.

    • %prun – выполнить выражение с профилированием (сбором статистики по времени работы функций).

    • %lprun – профилировать отдельную функцию построчно (требует line_profiler).

    • %memit / %%memit – оценить потребление памяти (требует memory_profiler).

  • Прочие:

    • %reset – сбросить пространство имен (удалить все определённые переменные/функции). Без аргументов попросит подтверждение; %reset -f – без подтверждения. Полезно, чтобы очистить среду, не перезапуская kernel.

    • %reset_selective varprefix – удалить переменные, имена которых начинаются с varprefix (тоже с -f).

    • %history – показать историю выполненных команд (можно ограничить количество, использовать -n чтобы с номерами ячеек).

    • %autoreload – магия для автоматической перезагрузки модулей: %load_ext autoreload + %autoreload 2 позволяет автоматически перезагружать модули, если их код в файлах изменился (полезно при разработке библиотек вместе с ноутбуком).

Эти магии значительно облегчают жизнь. Например, %whos часто выручает, чтобы быстро посмотреть, какие переменные у вас есть и не совершить опечатку в имени. %cd и %ls позволяют работать с файлами, не переходя в терминал. %run – разбивать проект на ноутбук и внешние .py файлы, комбинируя интерактивность с организованным кодом.