站長(zhǎng)之家注:Python不僅是最如今最通用的編程語(yǔ)言,而且在集成新功能時(shí)也是最靈活的,比如魔術(shù)命令(Magic commands)就是python shell當(dāng)中重要的功能之一。以下我們來(lái)看下10個(gè)簡(jiǎn)單的魔術(shù)命令是如何幫助工程師提高生產(chǎn)力。
python中的魔術(shù)命令到底是什么?
魔術(shù)命令是對(duì)常規(guī)python代碼的增強(qiáng),這些命令由IPython內(nèi)核提供。同時(shí)這些魔術(shù)命令通常以“%”字符作為前綴。
這些命令基本上是為解決我們面臨的常見(jiàn)問(wèn)題而添加的,并且也是為程序員的代碼提供了一些快捷方式。目前有2種魔術(shù)命令可用-%前綴和%%前綴。
%前綴表示該命令在一行代碼上運(yùn)行,而%%前綴允許該命令在整個(gè)單元格上運(yùn)行
以下是jupyter notebook中執(zhí)行的魔術(shù)命令及其實(shí)現(xiàn)的列表
運(yùn)行外部文件
當(dāng)我們嘗試在jupyter notebook中運(yùn)行一些代碼段時(shí),我們希望運(yùn)行位于某個(gè)目錄中的外部代碼文件。
%run允許你從jupyter Notebook運(yùn)行任何外部python文件
上面的文件myCode.py包含一個(gè)輸出上述語(yǔ)句的簡(jiǎn)單腳本。
如果我們指定文件名(包括%run命令的路徑),它將執(zhí)行該文件。
注意:%run還允許執(zhí)行外部jupyter Notebook。
代碼執(zhí)行時(shí)間
你有沒(méi)有考慮過(guò)你的代碼需要多少時(shí)間才能運(yùn)行?使用時(shí)間魔術(shù)命令可以追蹤單元的總體執(zhí)行情況。由于我們將在此處處理整個(gè)單元格,因此我們將%%作為時(shí)間關(guān)鍵字之前的前綴。
上面的單元格包含一個(gè)帶隨機(jī)計(jì)算的for循環(huán)。
%% time有助于獲取運(yùn)行for循環(huán)所需的執(zhí)行時(shí)間。
將內(nèi)容復(fù)制到外部文件
大多數(shù)的時(shí)候,你會(huì)覺(jué)得需要直接從jupyter notebook上將內(nèi)容添加到python腳本或文本文件中。你無(wú)需復(fù)制所有內(nèi)容并創(chuàng)建新文件,而可以通過(guò)在代碼之前添加writefile命令直接導(dǎo)出單元格內(nèi)容。
請(qǐng)注意命令前的%%,表示將導(dǎo)出單元格的全部?jī)?nèi)容。
由于我已經(jīng)創(chuàng)建了包含某些內(nèi)容的文件,因此它將顯示“Overwrite myCode.py”,指定它將用上圖所示的內(nèi)容覆蓋我的原始內(nèi)容。
顯示外部文件的內(nèi)容
通常你會(huì)將需要的幾行代碼從外部文件復(fù)制到你的代碼中
%pycat允許你顯示任何目錄中任何文件的內(nèi)容,且無(wú)需花費(fèi)很長(zhǎng)時(shí)間來(lái)獲取文件并打開文件進(jìn)行復(fù)制。
它可以將外部文件的所有內(nèi)容作為其輸出,從實(shí)際應(yīng)用來(lái)說(shuō),可以將它視為%writefile的反向邏輯。
列出所有變量
這個(gè)魔術(shù)命令顯示整個(gè)jupyter notebook中使用的所有變量。
以下是3個(gè)變量——2個(gè)字符串和1個(gè)整數(shù)。 如果我們運(yùn)行%who,它將列出我們定義的所有3個(gè)變量。
上面的代碼顯示所有變量,而與它們的數(shù)據(jù)類型無(wú)關(guān)。
為了顯示特定的數(shù)據(jù)類型變量,我們需要在魔術(shù)命令之后傳遞數(shù)據(jù)類型。上面的代碼顯示所有字符串?dāng)?shù)據(jù)類型變量作為其輸出。
在筆記本之間共享變量
這個(gè)魔術(shù)命令使你可以在不同的jupyter notebooks之間共享任何變量。你需要使用魔術(shù)命令傳遞原始變量。
為了檢索變量,你需要傳遞帶有'-r'參數(shù)的相同命令。
這是第一個(gè)筆記本的樣子
然后在另一個(gè)筆記本中寫檢索此數(shù)據(jù)所需的代碼
這可能是在不同筆記本之間共享任何數(shù)據(jù)類型的數(shù)據(jù)的最簡(jiǎn)單方法。
執(zhí)行HTML腳本
%% html允許我們?cè)趩卧裰芯帉慼tml代碼, 即該單元格將用作本單元格的html輸出的編輯器。
以下代碼包含一個(gè)用html創(chuàng)建的簡(jiǎn)單表。你會(huì)注意到html輸出顯示了預(yù)期的表格。
提示:你可以使用類似于HTML魔術(shù)命令的%% js magic命令在單元格中運(yùn)行Javascript代碼。
顯示Matplotlib視圖
%matplotlib內(nèi)鏈魔術(shù)命令是最流行的命令。此命令允許Jupyter notebook在筆記本中顯示matplotlib視圖。此命令激活對(duì)jupyter notebook的matplotlib交互式支持。
我們已經(jīng)導(dǎo)入了一些我們需要用來(lái)解釋命令功能的庫(kù)。
現(xiàn)在,我們將創(chuàng)建兩個(gè)隨機(jī)列表制作成圖標(biāo)
現(xiàn)在,我們將繪制數(shù)據(jù)的散點(diǎn)圖
%matplotlib內(nèi)鏈魔術(shù)命令使你可以可視化jupyter notebook本中的圖形。
設(shè)置環(huán)境變量
這一魔術(shù)命令可以幫助你達(dá)成3件事情:
1、列出所有環(huán)境變量
2、獲取特定環(huán)境變量的值,
3、為變量賦值
沒(méi)有參數(shù)的%env將列出所有環(huán)境變量。
具有單個(gè)參數(shù)的%env將返回指定參數(shù)的值。
“%env變量值”將設(shè)置指定變量名稱的值。
對(duì)象詳細(xì)信息
%pinfo提供了有關(guān)隨其一起傳遞的對(duì)象的詳細(xì)信息。
在以下代碼段中,我傳遞了一個(gè)簡(jiǎn)單的字符串“a”以及%pinfo以獲取有關(guān)它的詳細(xì)信息。
從上面的輸出中,%pinfo提供有關(guān)字符串對(duì)象的所有信息。
你可以使用“%lsmagic”命令找到所有魔術(shù)命令列表。
這些是我的十大魔術(shù)命令,希望能幫助你提高生產(chǎn)力并節(jié)省時(shí)間。
注:本文編譯自medium,作者Siddhesh Jadhav,原文標(biāo)題為Top 10 Magic Commands in Python to Boost your Productivity
聯(lián)系客服