Home » Python » IPython・Jupyterの使い方 » IPythonの%whosが変数を確認するのに便利

IPythonの%whosが変数を確認するのに便利

動作検証バージョン:64bit版のWindows 10 + Python 3.7.3 + IPython 7.8.0

VBAの経験がありPythonの学習を始めた方から、
「Pythonには変数の宣言行がないので、変数なのか、変数ではない何らかの識別子なのかが区別し辛く、コードを読むが難しい」
といったお話を伺いました。

コードを読むコツについては別途ご紹介するとして、ツールに頼るのは悪くないと考えています。

[スポンサードリンク]

IPythonの%whosで変数を確認できる

IPythonの、マジックコマンド%whosを使えば、変数を簡単に確認できます。

まずは、以下のようなコードをIPython上で実行してみると、

for i in range(3):
    print(i * 100)

以下のような表示になります。

In [1]: for i in range(3):
   ...:    print(i * 100)
   ...: 
0
100
200

コード、

for i in range(3):
    print(i * 100)

を実行したので、変数iには0・1・2が順番に代入され、「print(i * 100)」の結果0・100・200が出力されています。

この後に、マジックコマンド%whosを実行すると、以下のような表示になります。

In [2]: %whos
Variable   Type    Data/Info
----------------------------
i              int       2

[Variable]欄に変数名の「i」、[Type]欄に変数iのデータ型「int」、[Data/Info]欄にはこの時点で変数iに格納されているデータ「2」が表示されています。

変数ではない、for・in・range・printは表示されていません。

%whosはVBEのローカルウィンドウに似ている

拙著『いちばんやさしいExcel VBAの教本』では、変数の中身を確認するツールとしてローカルウィンドウを多用しています。

『いちばんやさしいExcel VBAの教本』p.111より

IPythonの%whosで表示される項目は、VBEのローカルウィンドウに表示される項目とよく似ています。

スクリプト実行後に%whosを実行する

事前に作成しておいたスクリプトをIPythonで実行した場合でも、%whosは使えます。

例えば以下のような、Unicodeコードポイント・文字コード番号を取得するスクリプトを、

txt = input('文字列を入力してください:')
for i in txt:
    print(i, ord(i), hex(ord(i)))

samp_get_unicode.pyとして保存しておいて、IPythonのマジックコマンド%runで、まずは実行します。

In [3]: %run samp_get_unicode.py
文字列を入力してください:あいう
あ 12354 0x3042
い 12356 0x3044
う 12358 0x3046

スクリプト内のコード「txt = input('文字列を入力してください:')」によって、「文字列を入力してください:」と表示されたので、「あいう」と入力すると上記のような状態になります。「あ」「い」「う」というそれぞれの文字・10進表記の文字コード番号・16進表記の文字コード番号が表示されています。

その後、%whosを実行すると以下のような表示になります。
In [4]: %whos
Variable   Type    Data/Info
----------------------------
i              str      う
txt           str      あいう

スクリプトで使っている変数は、iとtxtの2つで、いずれもstr型で、iにはfor文の最後に格納された「う」が、txtには入力した「あいう」が入っていることがわかります。

変数ではない、input・for・in・print・ord・hexは表示されていません。

IPythonはプログラミング学習でおすすめ

プログラミング学習という観点からは、Anacondaでいろいろなものを一気にインストールしてしまうよりも、その都度必要なものをpipでインストールするほうがイイと、私は考えています。

Pythonを実行する環境としては、最初のうちは標準のIDLEでも十分だと感じます。

こんな、プリミティブな状態から学習することを好む私ですが、IPythonについては、Pythonの学習がある程度進んだ方に、かなりおすすめしたいと思っています。

最終更新日時:2023-01-10 16:41

[スポンサードリンク]

Home » Python » IPython・Jupyterの使い方 » IPythonの%whosが変数を確認するのに便利

「IPython・Jupyterの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.