IPython

Python学習【365日チャレンジ!】263日目のマスターU(@Udemy11)です。

今日もメルカリをみていると、魅力的な商品が並んでいるので思わず購入しそうになりました。

同じような商品を持っているので、なんとか踏みとどまったのですが、ストックはいくつか持っておきたくなるんですよね。

とりあえず欲しかった商品を手に入れたので、さっそく釣果情報をのぞいてみました。

すると近所でも青物がポツポツ上がっているみたいだったので、早起きしてほんの2時間ほど海へいってきたのですが、結果は残念なことに丸坊主。。。

ガックリな気持ちをリフレッシュして、今日もPython学習をはじめましょう。

昨日の復習

昨日は、Ansibleを使った自動化で使用したAnsibleモジュールについて調べました。

aptapt_repositorycommandcopyfileなどのモジュールがあり、公式ドキュメントで使い方をチェックすることができました。

かなりたくさんのモジュールがあるので、実際に使うモジュールを必要に応じて覚えるようにしましょう。

詳細については昨日の記事をごらんください。

今日から新しいセクションPythonの便利なライブラリに入ります。

IPythonとJupyter Notebook

IPythonは、対話型シェルのJupyter Notebookの元になっている対話型シェルで、他の言語を移植できるかどうかが2つの違いで、使い方に違いはありません。

Jupyter NotebookがIPythonの改良型に当たるので、多言語を移植できるのはJupyter Notebookの方で、Anacondaを使ってPythonをインストールしている場合は、どちらも自動的にインストールされています。

Anacondaを使っていない場合は、ターミナルからpip install ipythonを実行すれば、IPythonのインストールが完了します。

IPythonの起動

Pycharmを使っている場合は、下の方に【Python Console】というタブがあるので、クリックすればIPythonが使えるようになります。

IPythonの立ち上げ方

もし、【Python Console】というタブが表示されていない場合は、ターミナルからコマンドipythonを実行すれば、IPythonが立ち上がります。

IPythonの立ち上げ方

どちらを使っても問題ないので、どちらを使ってもかまいません。

IPythonの使い方

基本的な使い方はターミナルの対話型シェルと同じですので、簡単なコードを少し書いてみましょう。

In[1]: a = 'Python'
In[2]: a
Out[3]: 'Python'

In[4]: for i in range(10)
  ...:     print(i)
  ...:
0
1
2
3
4
5
6
7
8
9

In[5]:

最初のコードは、aPythonと入れて、2行目で出力するコードです。

3行目でPythonが出力されて、次のインプットを待つ状態になるので、次は、forループを使って0から10まで出力してみました。

print(i)でリターンキーを押したあと、もう一度リターンキーを押せば結果が表示されます。

直前入力のコードを入力

ターミナルの対話型シェルと大きくちがうところは、どちらも1行ずつコードを入力しているわけですが、ターミナルの対話型シェルは、直前入力のコードを1行ずつ記憶しているのに対して、IPythonの方は、直前に入力した複数行のまとまりで記憶しています。

ターミナルの対話型だと、ボタンを押せば、直前入力の1行だけのコードが表示され、もう一度を押すともう1行前のコードが表示されます。

一方、IPythonの場合は、ボタンを押せば、直前に実行したコードの複数行のまとまりが表示されます。

IPythonの使い方

直前のコードを書き換えて使いたいときなどはを押して表示させられるので、簡単に変更、追加ができます。

マジックコマンド

マジックコマンドは、%をつけて実行できるコマンドのことで、例えば%historyは、これまでに実行したコードの履歴を表示させるコマンドです。

IPythonの使い方 history

import sysから始まる2行は、IPythonを起動したときのコマンドです。

3行目以降は、これまでに実行したコマンドが順番に表示されています。

マジックコマンドはたくさん用意されていて、公式ドキュメントを見ればすべてのマジックコマンドを確認できますが、%quickrefを実行すれば、実行可能なマジックコマンドを確認することができます。

IPythonの使い方 quickref

次に%saveコマンドを使って実行したコードをファイルに保存してみます。

In[8]: %save /tmp/ipython_history.py 1-8
The following commands were written to file `/tmp/ipython_history.py`:
print('PyDev console: using IPython 7.16.1\n')
import sys; print('Python %s on %s' % (sys.version, sys.platform))
sys.path.extend(['/Users/bigmacpro/PycharmProjects/libproject'])
a = 'Python'
a
for i in range(10):
    print(i)
    
for i in range(10):
    print(i)
    
get_ipython().run_line_magic('history', '')
get_ipython().run_line_magic('quickref', '')
get_ipython().run_line_magic('save', '/tmp/ipython_history.py 1-8')

In[9]: 

これまでに実行したコードをtmpディレクトリの中にipython_history.pyとして保存しています。

また、%cat /tmp/ipython_history.pyで、ファイルを表示させることができたり、%edit /tmp/ipython_history.pyでファイルを編集して保存したりすることもできますので、ぜひ試してみてください。

まとめ

個人的に、実際IPythonをPycharmで使っている人はあまりいないのではないかと思っています。

というのは、【IPython %history 使い方】などで検索するとJupyter Notebookに関する情報ばかりがヒットするので、IPythonを活用する場合は、殆どの方がJupyter Notebookを使っているのではないかと予想できるからです。

過去に紹介したことのある高田さんの【Pythonデータサイエンス入門でも】Jupyter Notebookを活用してましたしね。

PycharmでもJupyter Notebookでもコード入力のレベルを上げるには、ある程度ショートカットを頭に入れる必要があるみたいなので、Vimを学びつつ、積極的に取り入れようとしているのですが、年のせいか、どうも覚えが悪くて困っています。

もっと本腰入れて真剣に取り組まないといけませんね。

それでは、明日もGood Python!