ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

Jupyterより便利!?VS Codeで「#%%」

前回 VS Code+Jupyter Notebookを使ってPythonを動かす方法を紹介しました。これも非常に簡単にできるの ですが、もっと便利な方法がありましたので紹介します。

VS CodePythonファイル(.sh)を実行

「.sh」ファイルを作成

まずはファイルを作成します。VS Codeを開いて作成でもよいですし、フォルダ上に作成してファイルをVS Codeの画面にドラッグしてもよいです。

#%%を入力してみる

#%%と入力すると、Run Cell、Run Below、Debug Cellが出てきますね。

コードを書いて実行する

以下のように。続きを書いていきます。今回は処理を繰り返すfor文を使っています。

# %% for文の実行
a = 0
for i in range(5):
    a = a + i
print(a)

range(5)は0,1,2,3,4と5回繰り返す、という意味になります。

まず1回目はiに0が入るため、a + i は0 + 0、つまり0がaに代入されます。2回目はiに1が入るため、a + i は0 + 1、つまり1がaに代入されます。

これらを繰り返して結果を出すのですが、まず実行して結果を見てみましょう。

実行方法はJupyter Notebookと同じShift + Enter(もしくはCtrl + EnterでもOK)です。

右側に実行結果が出てきました。

結果は0+1+2+3+4で10ですね

デバッグができて開発効率めちゃアップ!!

プログラムでよくあるのが、0始まりか1始まりか悩みます。

今回のrange(5)も、1,2,3,4,5かと思って1+2+3+4+5=15を期待していたら10?あれ?と思うことはよくあります。

今回は簡単な例なので、すぐ原因がわかりますが、長いプログラムになればなるほど原因を見つけるのって難しいですよね。

そんな時に便利なのがデバッグです。 これがこの#%%を使うやり方だと簡単にできるんです!

デバッグのやり方

Shift + Enterを押すと繰り返しも全部実行されて、最後の答しか出てこないです。 そのため、まず実行を途中で止めたい場所(ブレークポイント)をクリックしましょう。場所は行数が書かれている場所の左側です。

その後、下図のようにPythonデバッグを実行します。

するとブレークポイントの個所で止まりました。しかも、a,iそれぞれにどんな値が入っているかが見て取れます。

続行ボタンを押してみましょう。(もしくはF5でもOK)

i が1に変わりましたね。今黄色で囲まれた a = a + i の前で止まっているので、これから0 + 1 をしますよ、というのがわかります。

続けて「続行」をクリックすると、今度は aには1、iには2が入ってることがわかります。これを繰り返していくと、なるほど、0+1+2+3+4をやってるなぁということが分かります。

ちなみに、左側の変数一覧から見る方法もありますし、プログラムの画面上の変数(たとえばfor i in ...の i )にカーソルを充てるとポップアップで表示させることもできます。

おわりに

いかがでしたでしょうか。やはりデバッグができるかできないかで、プログラムの不具合が起こった時の原因解決がめちゃめちゃ早くなるので、これは非常に便利なツールです。

これを無料で提供するマイクロソフト恐るべしですね。。