VBAの経験がありPythonの学習を始めた方から、
「Pythonには変数の宣言行がないので、変数なのか、変数ではない何らかの識別子なのかが区別し辛く、コードを読むが難しい」
といったお話を伺いました。
コードを読むコツについては別途ご紹介するとして、ツールに頼るのは悪くないと考えています。
IPythonの%whosで変数を確認できる
IPythonの、マジックコマンド%whosを使えば、変数を簡単に確認できます。
まずは、以下のようなコードをIPython上で実行してみると、
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コードポイント・文字コード番号を取得するスクリプトを、
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が変数を確認するのに便利