十大魔術(shù)命令:Python中工作效率飆升之策
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
Python之所以能成為最通用的編程語(yǔ)言,與其集成新功能時(shí)的靈活性分不開。這就不得不提到魔術(shù)命令——添加到pythonshell的重要特性之一。
python中的魔術(shù)命令到底是什么?
魔術(shù)命令是常規(guī)python代碼的增強(qiáng),通常以“%”字符為前綴。這些命令由IPython內(nèi)核提供,基本上是為了解決常見問題而添加的,同時(shí)也為代碼提供了一些快捷方式。
魔術(shù)命令有兩種類型:%前綴和%%前綴。% 前綴表示命令在一行代碼上操作,而%% 前綴允許命令在整個(gè)計(jì)算單元上操作。
下面是一些魔術(shù)命令及其實(shí)現(xiàn),都在JupyterNotebook中執(zhí)行。
運(yùn)行外部文件
嘗試在JupyterNotebook中運(yùn)行一些代碼片段時(shí),希望運(yùn)行位于某個(gè)目錄中的外部代碼文件。%運(yùn)行允許從Jupyter Notebook運(yùn)行任何外部python文件。
上面的文件myCode.py包含一個(gè)輸出上述語(yǔ)句的簡(jiǎn)單腳本。
如果指定包含%run命令路徑的文件名,它將執(zhí)行該文件。
注:%運(yùn)行也允許執(zhí)行外部Jupyter Notebook。
代碼執(zhí)行時(shí)間
有沒有想過運(yùn)行計(jì)算單元需要多長(zhǎng)時(shí)間?Time魔術(shù)命令允許跟蹤計(jì)算單元的總執(zhí)行情況。由于將在此處處理整個(gè)計(jì)算單元,因此使用%%作為time關(guān)鍵字之前的前綴。
上面的計(jì)算單元包括一個(gè)帶有隨機(jī)計(jì)算的for循環(huán)。%%time有助于獲得運(yùn)行for循環(huán)所需的時(shí)間。
將內(nèi)容復(fù)制到外部文件
大多數(shù)時(shí)候,有必要將內(nèi)容直接從JupyterNotebook中添加到python腳本或文本文件中??梢灾苯油ㄟ^在代碼之前添加writefile命令來(lái)導(dǎo)出單元內(nèi)容,而不是復(fù)制所有內(nèi)容并創(chuàng)建一個(gè)新文件。
注意,命令前面的double %表示將導(dǎo)出單元的全部?jī)?nèi)容。
因?yàn)橐呀?jīng)用一些內(nèi)容創(chuàng)建了這個(gè)文件,所以它顯示了“OverwritemyCode.py”。指定它將用上面圖像中顯示的內(nèi)容覆蓋原始內(nèi)容。
列出所有變量
這個(gè)魔術(shù)命令顯示了整個(gè)notebook中使用的所有變量。以下是3個(gè)變量——2個(gè)字符串和1個(gè)整數(shù)。如果運(yùn)行%who,它將列出定義的所有3個(gè)變量。
- a = "hello"
- b = "Good Morning"
- c = 1
上面的代碼顯示了所有的變量,而與它們的數(shù)據(jù)類型無(wú)關(guān)。
為了顯示特定的數(shù)據(jù)類型變量,需要在魔術(shù)命令之后傳遞數(shù)據(jù)類型。上面的代碼將所有字符串?dāng)?shù)據(jù)類型變量顯示為其輸出。
在notebook之間共享變量
這個(gè)魔術(shù)命令允許在不同的JupyterNotebook之間共享任何變量。需要使用魔術(shù)命令傳遞原始變量。要獲取該變量,需要傳遞帶有“-r”參數(shù)的相同命令。
這是第一個(gè)notebook的樣子:
獲取這些數(shù)據(jù)所需的代碼寫在另一個(gè)notebook里。
這可能是在不同的notebook之間共享任何數(shù)據(jù)類型的數(shù)據(jù)的最簡(jiǎn)單的方法。
顯示外部文件的內(nèi)容
通常需要將外部文件中的幾行代碼復(fù)制到代碼中。%pycat允許在任何目錄中顯示任何文件的內(nèi)容,而不是通過冗長(zhǎng)的過程來(lái)獲取文件并將其打開以進(jìn)行復(fù)制。
它將外部文件的所有內(nèi)容顯示為其輸出。就其應(yīng)用而言,可以看作是%writefile的反向。
執(zhí)行html腳本
%% html允許在單元中編寫html代碼?,F(xiàn)在,單元將充當(dāng)一個(gè)html編輯器,輸出單元的html。
下面的代碼包含一個(gè)用html創(chuàng)建的簡(jiǎn)單表??梢宰⒁獾絟tml輸出顯示了預(yù)期的表。
- %%html
- <html>
- <body>
- <table>
- <tr>
- <th>Name</th>
- <th>Country</th>
- <th>Age</th>
- </tr>
- <tr>
- <td>Sid</td>
- <td>India</td>
- <td>22</td>
- </tr>
- <tr>
- <td>Dave</td>
- <td>UK</td>
- <td>28</td>
- </tr>
- </table>
- </body>
- </html>
提示:可以使用類似于HTML魔術(shù)命令的%%jsmagic命令在單元中運(yùn)行Javascript代碼。
顯示Matplotlib圖
%matplotlibinline魔術(shù)命令是最流行的命令。這個(gè)命令允許Jupyternotebook在notebook中顯示matplotlib圖形。這個(gè)命令激活matplotlib對(duì)Jupyter Notebook的交互式支持。
- import random
- import matplotlib.pyplot as plt
- %matplotlib inline
已經(jīng)導(dǎo)入了一些需要解釋命令功能的庫(kù)。
現(xiàn)在將創(chuàng)建兩個(gè)隨機(jī)列表來(lái)繪制圖形:
- a = []
- b = []
- for i in range(10):
- a.append(random.randint(0,10))
- b.append(random.randint(0,10))
現(xiàn)在將繪制數(shù)據(jù)的散點(diǎn)圖。
%matplotlibinlin魔術(shù)命令允許在Jupyter Notebook中可視化圖形。
設(shè)置環(huán)境變量
這個(gè)魔術(shù)命令可以做三件事——列出所有的環(huán)境變量,獲取一個(gè)特定環(huán)境變量的值,并為一個(gè)變量設(shè)置一個(gè)值。
不帶參數(shù)的%env將列出所有環(huán)境變量。
帶有單個(gè)參數(shù)的%env將返回指定參數(shù)的值。
%env變量值:變量 將設(shè)置指定變量名的值。
對(duì)象的詳細(xì)信息
%pinfo提供了與它一起傳遞的對(duì)象的詳細(xì)信息。它與對(duì)象的功能相似。
在下面的代碼片段中,傳遞了一個(gè)簡(jiǎn)單的字符串 a ,用%pinfo來(lái)獲取它的詳細(xì)信息。
- a = "The World Makes Sense!"
- %pinfo a
在上面的輸出中,%pinfo提供了關(guān)于字符串對(duì)象的所有信息。
可以使用 %lsmagic 命令找到所有魔術(shù)命令列表。
這就是提高工作效率,節(jié)省時(shí)間的十大魔術(shù)命令,希望能夠幫助到你。