PythonTutorを使うとPythonの勉強が捗りそう

自分はなんちゃって技術者といわれる部類の営業職なので、当然マニュアルなどを見ながら出ないとPythonはすんなり書くことができません(C言語などは体にしみこんでいるのでそこそこかけたりしますが)。とはいえ、もう少し体系立ててプログラミング言語を勉強できるといいなあと常々思っています。そんな中見つけたこちらのサイトですが、Pythonの実行時の状況(変数など)をビジュアル化(可視化)して表示しながらステップ実行ができます。

個人的にめちゃ便利じゃん!と思ったのでちょっとサイトの紹介がてら動作を確認してみます。

pythontutor.com

上記サイトにアクセスすると以下のような表示が行われます。

f:id:ueponx:20210913223355p:plain

このサイトはPython以外にもJavaCC++JavaScriptRubyといったプログラミング言語にも対応しているようです。

ページには以下の様に記載があります。

Python Tutorは、プログラミングを学ぶ上での根本的な障壁を克服するのに役立ちます。つまり、コンピューターがコードの各行を実行するときに何が起こるかを理解することです。 これを使用して、WebブラウザーでPythonJava、C、C、JavaScript、およびRubyコードを記述し、その実行を段階的に視覚化することができます。

Pythonに関しては即ステップ実行してくれるようですが、Javaなどのコンパイルが必要なプログラミング言語では実行時の前処理が必要のようです。

また、ページ下部にも実際のコードとデータの様子などが表示されていました。一見するとビジュアル的なデータなどの表示が行われるデバッガのような位置づけのようです。

実際にコードを試してみる

では実際にコードを実行して試してみようとおもいます。今回はPythonを使用するので画面上部にある【Python Tutor】というリンクをクリックします。

f:id:ueponx:20210913225439p:plain

クリックするとエディタモードに画面が遷移します。エディタモードでは【Write code in】というプルダウンメニューで言語やバージョンを選択することができます。 Pythonのバージョン3系は3.6が該当するので、プルダウンからPython 3.6を選択すればよいでしょう。サポート外ながらも2.7系のPythonも使用できるようです。

f:id:ueponx:20210913225630p:plain

使用可能なプログラミング言語の候補 f:id:ueponx:20210915005557p:plain

エディタ部分に実行可能なPythonのコードを記入すれば準備完了です。 今回はサンプルコードとして用意されたものを実行してみます。

サンプルコード

x = [1, 2, 3]
y = [4, 5, 6]
z = y
y = x
x = z

x = [1, 2, 3] # a different [1, 2, 3] list!
y = x
x.append(4)
y.append(5)
z = [1, 2, 3, 4, 5] # a different list!
x.append(6)
y.append(7)
y = "hello"


def foo(lst):
    lst.append("hello")
    bar(lst)

def bar(myLst):
    print(myLst)

foo(x)
foo(z)

f:id:ueponx:20210915010055p:plain

【Visualize Execution】ボタンをクリックするとステップ実行画面が表示されます。

f:id:ueponx:20210915010120p:plain

この画面ではコードを各行ごとにステップ実行し、変数の値や参照などを可視化してみながら実行を行うことができます。変数の値なのか参照なのかわかるので初学者にも非常にわかりやすく見えると思います。

f:id:ueponx:20210915010213p:plain

画面内にある【Next >】ボタンを押すことで順次コードを実行し、その時の状態を可視化してくれます。【Prev >】を押せば1つ前の状態に戻すことができます。また、【Last >>】ボタンをクリックすれば、その時点から最後までのコードまで一気に実行することができます。同様に【<< First】ボタンをクリックすれば、初期状態に戻すこともできます。ターミナルデバッガ的な使い方も簡単にできます。

f:id:ueponx:20210915010433p:plain

また、画面の右上には標準出力で表示される内容を示すボックスがあり、その下にデータの可視化が行われるエリアが存在します。

f:id:ueponx:20210915010632p:plain

では、このコードをステップ実行してみましょう。【Next >】ボタンをクリックします。

f:id:ueponx:20210915011302p:plain

すると、エディタ部分の左側にある矢印が1行下に移動します。そして、右側のエリアに実行したコードの内容が可視化されて表示されます。

f:id:ueponx:20210915011410p:plain

このような形で実行の状態が順次ステップ的に表示されます。また、この状態をパーマネントリンクとして保存する事もできます。

f:id:ueponx:20210915012928p:plain

先程のコードを最後まで実行すると以下のような状態になります。

f:id:ueponx:20210915013103p:plain

おわりに

Python Tutorを使用することで、Pythonの実行状態をわかりやすく確認しながら動作させることができます。 すべてのコードの実行ができるというわけでもありませんが、基本的なコード(教科書のようなコード)の動きを確認するのであれば、 かなりの助けになるサービスではないでしょうか。

このような勉強用のサイトは今まで知りませんでしたが、まだまだネットには有用なものがありますね。 うまく使ってPythonを勉強するのが捗るといいな思います。