Ipython 直譯器

派森學python發表於2019-02-16

進入ipython

通常我們並不使用Python自帶的直譯器,而是使用另一個比較方便的直譯器——ipython直譯器,命令列下輸入:

ipython

即可進入ipython直譯器。

所有在python直譯器下可以執行的程式碼都可以在ipython直譯器下執行:

print "hello, world"
hello, world

可以進行簡單賦值操作:

a = 1

直接在直譯器中輸入變數名,會顯示變數的值(不需要加print):

a
1



b = [1, 2, 3]

ipython magic命令

ipython直譯器提供了很多以百分號%開頭的magic命令,這些命令很像linux系統下的命令列命令(事實上有些是一樣的)。

檢視所有的magic命令:

%lsmagic
Available line magics:
%alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cd  %clear  %cls  %colors  %config  %connect_info  %copy  %ddir  %debug  %dhist  %dirs  %doctest_mode  %echo  %ed  %edit  %env  %gui  %hist  %history  %install_default_config  %install_ext  %install_profiles  %killbgscripts  %ldir  %less  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %macro  %magic  %matplotlib  %mkdir  %more  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %ren  %rep  %rerun  %reset  %reset_selective  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%cmd  %%debug  %%file  %%html  %%javascript  %%latex  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Automagic is ON, % prefix IS NOT needed for line magics.


line magic 以一個百分號開頭,作用與一行;

cell magic 以兩個百分號開頭,作用於整個cell。

最後一行Automagic is ON, % prefix IS NOT needed for line magics.說明在此時即使不加上%也可以使用這些命令。

使用 whos 檢視當前的變數空間:

%whos
Variable   Type    Data/Info
----------------------------
a          int     1
b          list    n=3

使用 reset 重置當前變數空間:

%reset -f

再檢視當前變數空間:

%whos
Interactive namespace is empty.

使用 pwd 檢視當前工作資料夾:

%pwd
u`C:\Users\lijin\Documents\Git\python-tutorial\01. python tools`


使用 mkdir 產生新資料夾:

%mkdir demo_test

使用 cd 改變工作資料夾:

%cd demo_test/
C:UserslijinDocumentsGitpython-tutorial 1. python toolsdemo_test

使用 writefile 將cell中的內容寫入檔案:

%%writefile hello_world.py
print "hello world"
Writing hello_world.py

使用 ls 檢視當前工作資料夾的檔案:

%ls
 驅動器 C 中的卷是 System
 卷的序列號是 DC4B-D785

 C:UserslijinDocumentsGitpython-tutorial 1. python toolsdemo_test 的目錄

2015/09/18  11:32    <DIR>          .
2015/09/18  11:32    <DIR>          ..
2015/09/18  11:32                19 hello_world.py
               1 個檔案             19 位元組
               2 個目錄 121,763,831,808 可用位元組

使用 run 命令來執行這個程式碼:

%run hello_world.py
hello world

刪除這個檔案:

import os
os.remove(`hello_world.py`)

檢視當前資料夾,hello_world.py 已被刪除:

%ls
 驅動器 C 中的卷是 System
 卷的序列號是 DC4B-D785

 C:UserslijinDocumentsGitpython-tutorial 1. python toolsdemo_test 的目錄

2015/09/18  11:32    <DIR>          .
2015/09/18  11:32    <DIR>          ..
               0 個檔案              0 位元組
               2 個目錄 121,763,831,808 可用位元組

返回上一層資料夾:

%cd ..
C:UserslijinDocumentsGitpython-tutorial 1. python tools

使用 rmdir 刪除資料夾:

%rmdir demo_test

使用 hist 檢視歷史命令:

%hist
print "hello, world"
a = 1
a
b = [1, 2, 3]
%lsmagic
%whos
%reset -f
%whos
%pwd
%mkdir demo_test
%cd demo_test/
%%writefile hello_world.py
print "hello world"
%ls
%run hello_world.py
import os
os.remove(`hello_world.py`)
%ls
%cd ..
%rmdir demo_test
%hist

ipython 使用

使用 ? 檢視函式的幫助:

sum?

使用 ?? 檢視函式幫助和函式原始碼(如果是用python實現的):

# 匯入numpy和matplotlib兩個包
%pylab
# 檢視其中sort函式的幫助
sort??
Using matplotlib backend: Qt4Agg
Populating the interactive namespace from numpy and matplotlib

ipython 支援使用 <tab> 鍵自動補全命令。

使用 _ 使用上個cell的輸出結果:

a = 12
a
12



_ + 13
25


可以使用 ! 來執行一些系統命令。

!ping baidu.com

正在 Ping baidu.com [180.149.132.47] 具有 32 位元組的資料:
來自 180.149.132.47 的回覆: 位元組=32 時間=69ms TTL=49
來自 180.149.132.47 的回覆: 位元組=32 時間=64ms TTL=49
來自 180.149.132.47 的回覆: 位元組=32 時間=61ms TTL=49
來自 180.149.132.47 的回覆: 位元組=32 時間=63ms TTL=49

180.149.132.47 的 Ping 統計資訊:
    資料包: 已傳送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
    最短 = 61ms,最長 = 69ms,平均 = 64ms

當輸入出現錯誤時,ipython會指出出錯的位置和原因:

1 + "hello"
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-25-d37bedb9732a> in <module>()
----> 1 1 + "hello"


TypeError: unsupported operand type(s) for +: `int` and `str`

相關文章