
「Scientific Python」を復習すべく、前回は「サイエンティフィックPythonのための」IDE、Spyderをばインストールいたしました。Python向けのIDEもあまたいろいろある中で何がサイエンティフィックなのか勉強させていただく所存。まあ教本は別口で「サイエンティフィックなやつ」をダウンロード済。
※「 ソフトな忘却力」投稿順 Index はこちら
Scientific Python Lectures
「Scientific Pythonを学ぶ」ためにダウンロードさせていただいた文書は、以下のURLにありますScientific Python Lectures様のものです。
https://lectures.scientific-python.org/
全700ページ近い大部な書物であります。「サイエンティフィック」なPythonの基礎はみんな大好きNumPy配列の上に構築していくみたいです。でも
後でNumPy配列を練習するので、先に素のPythonのリストでも練習しとけ
という思し召しみたいです。NumPyに入る前にPythonのリストの練習などが挙げられてます。当方でも、素のPythonのリストの練習など、Spyder上で行ってみることにいたします。内容は教本とは大分離れている気がしないでもないが。。。
Spyderエディタでの「CELL」と変数イクスプローラ
Spyderの左半面にはエディタウインドウあり、フツーにPythonのスクリプトを書いてセーブすることができます。しかし、IDEというからには単なるエディタにはあらず、スクリプトの一部を取り出して実行することができるのでした。まあ、IPythonの処理系自体が、インタラクティブにPythonコードを実行するのに適していますが、後でIPythonのヒストリをコピペしてソースファイルに設え直すのも若干メンドイです。スクリプトとして残すつもりであれば、最初からスクリプトとして書いておいて、適宜、部分毎に動作確認してファイルとして保存するのに便利かと。実行の範囲をCELLと呼び、#%% (コメントにみえる)でソースに区切りを入れておきます。こんな感じ。
#%%と書いてあるところの上に線が引かれ、どの部分がセルとして認識されているのか分かるというもの。そこにカーソル持っていって上部の「CELLの実行」ボタンを押せば、該当部分が左下のIPythonのコンソールにて実行されます。こんな感じ。
ただ、上記の場合はPrintなどの印字命令が含まれていないので、IPython上には変数の値とかが出力されてません。
しかし、SpyderにはVariableExplorerというツールがあるのでした。上記のソースをちょこまかCELLで実行していった最後のところが以下に。
何か1CELLを実行する度に変数の値が更新されていくので、わざわざPrint関数などよぶ必要を感じませんな。上記のソースの動作を掻い摘めば以下のようです。
-
- セル0でリスト内包表記をつかって文字列要素’w0’~’w4’を含むリストworkLisを生成
- セル1でworkLisをtemp1に代入。この場合、temp1はworkLisと同じ実体を指すようになる
- セル2でworkLisを「シャローコピー」してtemp2に代入。リスト自体の構造は新規に作られる筈。
- セル3でworkLisの1番要素(先頭から2つめ)に新たな文字列’new1’を代入。⇒workLisに代入されるとtemp1にも反映してしまう(赤丸、)一方、temp2には影響なし。
- セル4でtemp1の2番要素(先頭から3つめ)に新たな文字列’new2’代入。⇒temp1に代入されてもworkLisにも反映する(黄丸。)やっぱりtemp2には影響なし。
- セル5でtemp2の3番要素(先頭から4つめ)に新たな文字列’new3’代入(緑丸。)temp2は離れ小島なので、temp1、workLisには影響なし。
こんな様子が、VariableExplorerを開いておくと、アカラサマになります。便利。
また、VariableExplorerのValueのところをクリクリしてやると値を変更することも可能。こんな感じ。
4番を’Yahoo4’に書き換えてみました。ここで注意点は以下です。
SpyderのVariable Explorerでlistの要素を書き替えるとリストそのものがコピーされるみたい。上記の場合、temp1とworkLisが同じものを指していた関係は失われた
実際、Yahoo4を書きこんだ後、2つの変数をIPythonから操作してみるとこんな感じです。
IPythonコンソール
IPythonコンソールについてもSpyderはやってくれます。
複数のコンソールを開き(タブで切り替えられる)、エディタウインドウのスクリプト(セル)をどのインスタンスで実行するかなども指定できるようです。
至れり尽くせり。ホントか?