日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

史上最详细、最完全的ipython使用教程,Python使用者必备!

發(fā)布時間:2025/3/21 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 史上最详细、最完全的ipython使用教程,Python使用者必备! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、ipython簡介

關(guān)于什么是ipython,本文就不加以介紹了,他是一個非常流行的python解釋器,相比于原生的python解釋器,有太多優(yōu)點和長處,因此幾乎是python開發(fā)人員的必知必會。

1、ipython相比于原生的python有什么優(yōu)勢

(1) python shell不能在退出保存歷史;ipython歷史記錄自動保存:保存在history.sqlite文件下:可用“_”、“__”、“___”調(diào)用最近三次記錄;

(2) python shell不支持tab自動補全;ipython支持tab補全;

(3) python shell不能快速獲取類、函數(shù)信息;ipython通過“?”顯示對象簽名、文檔字符串、代碼位置,通過“??”顯示源代碼;(4) python shell不能直接執(zhí)行shell命令,需要借助sys;ipython通過“!”調(diào)用系統(tǒng)命令,如“!uptime”;

(5) 其他ipython有很多magic函數(shù),可通過使用%lsmagic枚舉;

???? %run:運行python文件

???? %edit:使用編輯器打開當前函數(shù)編輯

???? %save:把某些歷史記錄保存到文件

???? %debug:激活debug程序

???? 等等,后面會講到

(6)ipython有很多快捷鍵

(7)ipython的擴展宏系統(tǒng)、storemagic持久化宏、變量、別名;以及autoreload自動重載等功能;

下面挑選幾個典型的加以說明:

(1)Python對象在ipython環(huán)境下排版得更好,格式化更加美觀。比如對于一個字典類型data。

??? >>> import numpy as np
??? >>> data={i:np.random.randn() for i in range(8)}
??? >>> data
??? {0: 0.5745972896627615, 1: 0.888451102340561, 2: -2.2941687621316924, 3: 0.01790118639622907, 4: 0.3600199138099036, 5: 0.6118078188322031, 6: 0.5261552735725278, 7: -0.20874867962524404}

這是原生python下顯示的結(jié)果,很不美觀, 因為當字典很長的時候,很難看。

??? data={i:np.random.randn() for i in range(8)}
??? ?
??? In [13]: data
??? Out[13]:
??? {0: -0.24691306010199965,
???? 1: 1.0770180986231184,
???? 2: 0.9459463985248865,
???? 3: 0.7618376828038825,
???? 4: 1.6075756654719342,
???? 5: -0.04417798701828061,
???? 6: -1.062961626712148,
???? 7: -0.7381927912455305}

這是ipython下的輸出格式,可以看見,字典排列的很美觀,非常易于查看。

(2)提供更強大的交互體驗

我們都知道,在python原生開發(fā)條件下,單下劃線“_”表示的是最近的一個輸出結(jié)果,但是ipython則在此基礎(chǔ)之上做出了更強大的功能。因為原生Python編輯器不僅丑,而且是沒有行號的,但是ipython提供了行號,這不僅更好看,而且有很多妙用哦,如下:

_ :表示最近的一個輸出結(jié)果;

__ :表示最近的兩個輸出結(jié)果;

_行號 :查看指定行的那個變量的結(jié)果

_i行號:查看指定行號輸入的變量名稱

示例如下:

??? In [1]: a=100
??? ?
??? In [2]: a
??? Out[2]: 100
??? ?
??? In [3]: b=200
??? ?
??? In [4]: b
??? Out[4]: 200
??? ?
??? In [5]: _
??? Out[5]: 200
??? ?
??? In [6]: __
??? Out[6]: 200

注意:這里一定要輸出a、b,也就是說,如果上面沒有第二行和第四行,那是不行的,像下面這樣

a=100

_

這時會報錯的,因為_和__針對的是最近一個和最近兩個輸出了的,沒有輸出就不行了。

??? In [9]: _4
??? Out[9]: 200
??? ?
??? In [10]: _i3
??? Out[10]: 'b=200'
??? ?
??? In [11]: _i4
??? Out[11]: 'b'

注意:

(a)_4 表示的是查看第四行輸出的變量,但是這里如果改為_3 就不行了,因為第三行之定義了b=200,并沒有輸出,所以

_行號 只能夠用在輸出的行號上面。

? (b) 但是? _i行號,不管是用在輸出還是輸入上面都是沒有問題的。

如何判斷是輸出還是輸入?前面是In的表示輸入,是Out表示輸出。
二、ipython的內(nèi)省

ipython相較于原生的python,提供了更加強大的內(nèi)省功能,所謂內(nèi)省,也稱之為內(nèi)視,即 object introspection,主要有以下一些常見的方法:

object? 或者?object :顯示該對象的一些通用信息,注意python里面一切皆對象哦,包括函數(shù)、類。

object?? 或者??object:兩個問號顯示詳細信息,如果是類或者是函數(shù),還會顯示源代碼。即將問號放在前面和后面都可以。

通配符*匹配:如

numpy.*load*? 這會顯示所有的包含有l(wèi)oad的函數(shù)

numpy.*sort? 這會顯示所有以sort結(jié)尾的函數(shù)
三、ipython快捷鍵

下面介紹一下第一個和第二個快捷鍵,比如有如下代碼:

??? Ctrl-P??? 或上箭頭鍵 后向搜索命令歷史中以當前輸入的文本開頭的命令
??? Ctrl-N?? 或下箭頭鍵 前向搜索命令歷史中以當前輸入的文本開頭的命令
??? Ctrl-R?? 按行讀取的反向歷史搜索(部分匹配)
??? Ctrl-Shift-v?? 從剪貼板粘貼文本
??? Ctrl-C?? 中止當前正在執(zhí)行的代碼
??? Ctrl-A?? 將光標移動到行首
??? Ctrl-E?? 將光標移動到行尾
??? Ctrl-K?? 刪除從光標開始至行尾的文本
??? Ctrl-U?? 清除當前行的所有文本譯注12
??? Ctrl-F?? 將光標向前移動一個字符
??? Ctrl-b?? 將光標向后移動一個字符
??? Ctrl-L?? 清屏

??? In [16]: a=100
??? ?
??? In [17]: a
??? Out[17]: 100
??? ?
??? In [18]: abc=100
??? ?
??? In [19]: abcd=1000
??? ?
??? In [20]: a=100
??? ?
??? In [21]: a

當輸入a之后,然后按Ctrl+P,或者是按向上的方向鍵,則會依次顯示已a開頭的變量,依次是a、abcd、abc、a,不僅如此,很久之前在ipython里面輸入過的變量,只要是以a開頭的,都能夠顯示,知道最開始的那個以a開頭的位置,如果是Ctrl+N或者是向下的方向鍵,則正好相反。
四、魔術(shù)命令——magic command

什么是ipython的魔法命令?

所謂的模式命令,是指那些給我們提供方便,輕松控制ipython交互系統(tǒng)的命令,可以這樣去理解,魔術(shù)命令可以看成是ipython交互環(huán)境下面的命令行程序,其中很多還有一些命令行參數(shù)選項。

%quickref? :可以顯示ipython的快速參考

%magic? :可以查看到底有哪些模式命令(這個方法會顯示每一個命令的詳細信息,因此會很多)

%lsmagic :這里只會顯示模式命令的名字,會比較簡潔,查看起來更方便

%命令? 或者是%命令??:當我們想要查看某一命令的詳細信息,我們可以使用同前面類似的方法,在魔術(shù)命令后面添加一個或者是兩個問號??來查看詳細信息。

默認情況下,魔術(shù)命令總是以百分號%開頭,但這不是必須的,我們也可以不使用百分號,我們也可以直接使用不帶百分號的魔術(shù)命令,這稱之為“自動魔術(shù)命令——automagic”如:

magic 這會得到和 %magic一樣的效果,但是需要注意的是,不使用百分號時,不能出現(xiàn)和魔術(shù)命令同名稱的變量,否則顯示的就是變量了。那到底是使用百分號還是不使用百分號呢?事實上,我們也是可以自由控制的,通過%automagic來控制,

默認情況下,它是開啟的,即我們可以使用無%的魔術(shù)命令,只要與變量名不沖突即可,我么也可以關(guān)閉,如下:

??? %automagic -off 0
??? ?
??? Automagic is OFF, % prefix IS needed for line magics.

此時,再次輸入magic命令時,顯示:

??? magic
??? ---------------------------------------------------------------------------
??? NameError???????????????????????????????? Traceback (most recent call last)
??? ~\Desktop\test.py in <module>()
??? ----> 1 magic
??? ?
??? NameError: name 'magic' is not defined

?顯示magic是不存在的,因為已經(jīng)關(guān)閉了。此時必須使用%開頭

如何控制它的開還是關(guān)閉呢?

?%automagic - on, 1?? #此時打開

?%automagic - off, 0?? #此時關(guān)閉

下面介紹一些常見的魔術(shù)命令。

1、%run——運行一個Python腳本

即在ipython中我不僅可以運行代碼,我還可以運行一個已知的python腳本文件,就像是在命令行中的使用是一樣的,比如有一個以下的Python文件:

??? def addfunc(a,b,c):
??????? return a+b-c
??? ?
??? a=100
??? b=200
??? c=150
??? result=addfunc(a,b,c)

現(xiàn)在我們在ipython里面輸入如下代碼:

??? In [21]: %run C:\Users\XinAir\Desktop\test.py
??? ?
??? In [22]: a
??? Out[22]: 100
??? ?
??? In [23]: b
??? Out[23]: 200
??? ?
??? In [24]: c
??? Out[24]: 150
??? ?
??? In [25]: result
??? Out[25]: 150

我們發(fā)現(xiàn),腳本文件里面的變量,我們依然可以使用,一般格式如下:

%run C:\Users\XinAir\Desktop\test.py 命令行參數(shù)(如果有命令的話)

這個和cmd模式之下的

python C:\Users\XinAir\Desktop\test.py 命令行參數(shù)(如果有命令的話) 兩者是不是異曲同工。

不僅如此,我不僅能夠直接使用腳本文件里面的代碼,腳本文件也可以使用ipython環(huán)境中的變量,如下:

??? In [26]: %run C:\Users\XinAir\Desktop\test.py
??? ?
??? In [27]: x=1000
??? ?
??? In [28]: y=2000
??? ?
??? In [29]: z=1500
??? ?
??? In [30]: result=addfunc(x,y,z)
??? ?
??? In [31]: result
??? Out[31]: 1500

我們發(fā)現(xiàn),不僅可以直接使用腳本文件中的變量、函數(shù),還可以給腳本文件使用ipython本身的變量,除此之外,我還可以使用下面語句:

%run -i C:\Users\XinAir\Desktop\test.py??? 這個地方的-i是可選參數(shù),可以要,也可不要代表的就是interactive(交互)的意思。

2、%paste或者是%cpaste——執(zhí)行剪切板中的代碼

很多人可能覺得之好像沒什么用,實際上,它的用處非常大,我們在編寫代碼的時候,我們希望執(zhí)行某一小段代碼進行相關(guān)的測試,但是我們又不想專門再建立一個py文件,所以我們可以將代碼復(fù)制或者是剪切一下,這個時候代碼進入了剪切板,然后打開ipython,此時我們有三種處理辦法

第一:直接使用Ctrl+V進行粘貼,然后測試代碼

第二:輸入魔術(shù)命令%paste,回車,這個時候在剪切板中的代碼自動粘貼了進來,不再需要手動Ctrl+V了

第三:輸入魔術(shù)命令%cpaste,回車,然后再手動Ctrl+V,將代碼復(fù)制進來,注意最后一定要按兩個減號“--”退出才行哦,實際上它給了提示的。如下

??? %cpaste
??? Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
??? :x=5
??? :y=7
??? :if x>5:
??? :??? x+=1
??? :
??? :??? y=8
??? :--
??? ?
??? In [54]: y
??? Out[54]: 7
??? ?
??? In [55]: x
??? Out[55]: 5

3、%timeit 和%time 檢測任意Python語句的執(zhí)行時間

??? a=numpy.random.randn(100,100)
??? ?
??? In [65]: %timeit numpy.dot(a,a)
??? 70.8 μs ± 1.74 μs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

注意,執(zhí)行的語句要和%timeit放在同一行,%timeit python語句

%time指一次執(zhí)行代碼的總體時間

%tinmeit指多次執(zhí)行代碼的平均時間,使用這個命令是因為每次執(zhí)行同一個代碼的時間是不一樣的,所以通過多次執(zhí)行代碼求出的平均時間更能說明代碼的總體執(zhí)行時間

4、%who和%who_ls和%whos——查看當前interactive環(huán)境中的變量

他們都可以查看當前的ipython環(huán)境中有哪些變量,但有所區(qū)別

%who :依次顯示出每一個變量的名稱

%who_ls:以列表的形式返回

%whos:顯示出每一個變量的詳細信息

??? In [5]: %who
??? a??????? b?????? c
??? ?
??? In [6]: %who_ls
??? Out[6]: ['a', 'b', 'c']
??? ?
??? In [7]: %whos
??? Variable?? Type??? Data/Info
??? ----------------------------
??? a????????? int???? 100
??? b????????? int???? 200
??? c????????? int???? 300

5、%hist——查看歷史命令

??? In [11]: %hist
??? magic
??? a=100
??? b=200
??? c=300
??? %who
??? %who_Is
??? %who_is
??? %who_ls
??? %whos
??? %hist

6、刪除ipython環(huán)境中的變量

%xdel variable 刪除單個變量的引用

%reset指刪除interactive命名空間中全部的變量名

7、其他常用魔術(shù)命令

%debug 從最新的異常跟蹤的底部進入交互式調(diào)試器

%pdb 在異常發(fā)生后自動進入調(diào)試器

%page OBJECT 通過分頁器打印輸出object

%prun statement 通過cprofile執(zhí)行statement,并打印分析器的輸出結(jié)果

當然,魔術(shù)命令有很多,沒有完全列舉出,可以自己查看,后面的博文中也還會接觸到。

?

8、ipython開發(fā)環(huán)境與cmd之間的互相切換

在ipython交互情況下,直接輸入命令 !cmd 即可進入cmd模式

在cmd模式下直接輸入 ipython 可以再次回到 ipython模式

總結(jié)

以上是生活随笔為你收集整理的史上最详细、最完全的ipython使用教程,Python使用者必备!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。