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

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

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

Примеры использования магических команд

Попробуем несколько магий в действии:

# Навигация
%pwd                               # вывести текущую директорию
%ls                                # показать файлы
%cd data/                          # перейти в папку data
%ls                                # показать содержимое data
%cd ..                             # вернуться назад

# Работа с переменными
a = 10
b = [1, 2, 3]
%who                              # покажет: a, b
%whos                             # покажет детальную информацию о a и b

# Измерение времени
%time sum(range(1000000))
%timeit [x*x for x in range(1000)]

# Сохраним переменную между сессиями
long_list = list(range(10000))
%store long_list

Объяснения:

  • %pwd мы применили внутри print – да, магию можно вставить как выражение, обернув в (). Это фишка IPython: %pwd возвращает строку текущей директории, и мы напечатали её. Затем %ls выдал список файлов, %cd data/ вошли в папку data (покажет новый путь), ещё раз %ls – уже в папке data. %cd .. – обратно.

  • %who напечатал a b. %whos дал что-то вроде:

    Variable   Type    Data/Info  
    -----------------------------
    a          int     10  
    b          list    list of length 3
    

     

  • %time суммировал миллион чисел и вывел, например:

    CPU times: user 12 ms, sys: 0 ns, total: 12 ms  
    Wall time: 11.9 ms
    

    А %timeit для списка квадратов покажет, например:

    1000 loops, best of 5: 189 µs per loop
    

    (то есть ~0.000189 секунды на выполнение списка квадратов от 0 до 999).

  • %store long_list сохранит long_list. Теперь даже если вы перезапустите kernel, вы можете выполнить %store -r long_list и восстановить переменную (особенно актуально для долгих расчётов, чтобы не пересчитывать).

Обратите внимание: магические команды – это инструмент опытного пользователя, они не обязательны. Можно обойтись и без них (выполняя команды через ! или функции Python), но они делают работу более удобной. Со временем вы запомните основные.

Выбор между %time и %timeit

Для одной операции %time показывает длительность конкретного исполнения. %timeit повторяет вычисление и оценивает время нескольких прогонов. Это удобнее для короткого выражения, но повторное исполнение должно быть допустимым. Не измеряйте так отправку платежа или запись сообщения во внешний сервис.

Для самопроверки сравните создание списка квадратов и создание генератора. Если во втором случае не потребить генератор, вы измерите создание объекта вместо вычисления всех квадратов. Сравниваемые фрагменты должны выполнять одинаковый объём работы и возвращать сопоставимый результат.

В отчёте укажите размер входа, состояние окружения и операцию. Первый запуск может включать импорт или прогрев, а последующие — использовать кеш. Ускорение маленького фрагмента не означает ускорения всего ноутбука. Если код существенно меняет состояние, подготовьте независимый вход для каждого повторения.

Продолжите разбор: Отладка и обработка ошибок в ноутбуке.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.