【Python】IPythonのマジックコマンド(マジック関数)の使い方

IPythonには、コードの実行時間を計測したり、外部ファイルを操作したりするための便利なコマンド群「マジックコマンド(Magic Functions)」が用意されています。これらは先頭に % を付けて実行します。

目次

主なマジックコマンド一覧

マジック関数役割パラメータ例
%timeitコードの実行時間を計測する(複数回実行して平均値を算出)%timeit range(100)
%run外部のPythonスクリプトファイルを実行する%run script.py
%historyこれまでの入力履歴を表示する%history -n 1-5
%save指定した行の履歴をファイルに保存する%save file.py 1-10
%load外部ファイルのコードを現在の入力セルに読み込む%load script.py
%pwd現在の作業ディレクトリ(パス)を表示する%pwd
%ls現在のディレクトリ内のファイル一覧を表示する%ls

実行例

1. コードの実行時間を計測する (%timeit)

指定したコードを自動的に複数回ループ実行し、最も正確な平均実行時間を算出します。

In [1]: %timeit list(range(1000))
9.85 µs ± 120 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

2. 外部スクリプトを実行する (%run)

カレントディレクトリにある .py ファイルを、IPython環境内で実行します。実行後の変数はそのままIPython内で参照可能です。

sample.py (事前に作成されたファイル)

print("This is a sample script.")
message = "Hello from script!"

IPythonでの実行

In [2]: %run sample.py
This is a sample script.

In [3]: print(message)
Hello from script!

3. 履歴の参照と保存 (%history, %save)

過去に入力したコードを確認したり、特定の行だけを選んでファイルに保存したりできます。

# 何かコードを実行します
In [4]: s = "sample string"
In [5]: print(s)
sample string

# 履歴を確認します(オプションなしですべて表示)
In [6]: %history
%timeit list(range(1000))
%run sample.py
print(message)
s = "sample string"
print(s)

# 特定の行(4行目と5行目)を 'sample2.py' に保存します
In [7]: %save sample2.py 4 5
The following commands were written to file 'sample2.py':
s = "sample string"
print(s)

4. コードの読み込み (%load)

ファイルの内容を現在のセルに展開します。実行前に内容を確認・編集したい場合に便利です。

In [8]: %load sample2.py

# 実行すると、以下のようにセルの内容が書き換わります
# %load sample2.py
s = "sample string"
print(s)

補足:ラインマジックとセルマジック

  • ラインマジック (%): 1行単位で有効なコマンドです。(例: %timeit
  • セルマジック (%%): セル全体に対して有効なコマンドです。(例: %%timeit と書くと、そのセルの複数行のコード全体の時間を計測します)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次