全文共1899字,預計學習時長8分鐘
Python之所以能成為最通用的編程語言,與其集成新功能時的靈活性分不開。這就不得不提到魔術命令——添加到pythonshell的重要特性之一。
python中的魔術命令到底是什麼?
魔術命令是常規python代碼的增強,通常以“%”字符為前綴。這些命令由IPython內核提供,基本上是為了解決常見問題而添加的,同時也為代碼提供了一些快捷方式。
魔術命令有兩種類型:%前綴和%%前綴。% 前綴表示命令在一行代碼上操作,而%% 前綴允許命令在整個計算單元上操作。
下面是一些魔術命令及其實現,都在JupyterNotebook中執行。
運行外部文件
嘗試在JupyterNotebook中運行一些代碼片段時,希望運行位於某個目錄中的外部代碼文件。%運行允許從Jupyter Notebook運行任何外部python文件。
上面的文件myCode.py包含一個輸出上述語句的簡單腳本。
如果指定包含%run命令路徑的文件名,它將執行該文件。
注:%運行也允許執行外部Jupyter Notebook。
代碼執行時間
有沒有想過運行計算單元需要多長時間?Time魔術命令允許跟蹤計算單元的總執行情況。由於將在此處處理整個計算單元,因此使用%%作為time關鍵字之前的前綴。
上面的計算單元包括一個帶有隨機計算的for循環。%%time有助於獲得運行for循環所需的時間。
將內容複製到外部文件
大多數時候,有必要將內容直接從JupyterNotebook中添加到python腳本或文本文件中。可以直接通過在代碼之前添加writefile命令來導出單元內容,而不是複製所有內容並創建一個新文件。
注意,命令前面的double %表示將導出單元的全部內容。
因為已經用一些內容創建了這個文件,所以它顯示了“OverwritemyCode.py”。指定它將用上面圖像中顯示的內容覆蓋原始內容。
列出所有變量
這個魔術命令顯示了整個notebook中使用的所有變量。以下是3個變量——2個字符串和1個整數。如果運行%who,它將列出定義的所有3個變量。
<code>a
="hello"
b
="Good Morning"
c
=1
/<code>
上面的代碼顯示了所有的變量,而與它們的數據類型無關。
為了顯示特定的數據類型變量,需要在魔術命令之後傳遞數據類型。上面的代碼將所有字符串數據類型變量顯示為其輸出。
在notebook之間共享變量
這個魔術命令允許在不同的JupyterNotebook之間共享任何變量。需要使用魔術命令傳遞原始變量。要獲取該變量,需要傳遞帶有“-r”參數的相同命令。
這是第一個notebook的樣子:
獲取這些數據所需的代碼寫在另一個notebook裡。
這可能是在不同的notebook之間共享任何數據類型的數據的最簡單的方法。
顯示外部文件的內容
通常需要將外部文件中的幾行代碼複製到代碼中。%pycat允許在任何目錄中顯示任何文件的內容,而不是通過冗長的過程來獲取文件並將其打開以進行復制。
它將外部文件的所有內容顯示為其輸出。就其應用而言,可以看作是%writefile的反向。
執行html腳本
%% html允許在單元中編寫html代碼。現在,單元將充當一個html編輯器,輸出單元的html。
下面的代碼包含一個用html創建的簡單表。可以注意到html輸出顯示了預期的表。
<code>%%html<
html
><
body
><
table
><
tr
><
th
>Nameth
><
th
>Countryth
><
th
>Ageth
>tr
><
tr
><
td
>Sidtd
><
td
>Indiatd
><
td
>22td
>tr
><
tr
><
td
>Davetd
><
td
>UKtd
><
td
>28td
>tr
>table
>body
>html
>/<code>
提示:可以使用類似於HTML魔術命令的%%jsmagic命令在單元中運行Javascript代碼。
顯示Matplotlib圖
%matplotlibinline魔術命令是最流行的命令。這個命令允許Jupyternotebook在notebook中顯示matplotlib圖形。這個命令激活matplotlib對Jupyter Notebook的交互式支持。
<code>import
randomimport
matplotlib.pyplotas
plt %matplotlibinline
/<code>
已經導入了一些需要解釋命令功能的庫。
現在將創建兩個隨機列表來繪製圖形:
<code>a = [] b = []for
i inrange
(10
): a.append
(random.randint(0
,10
)) b.append
(random.randint(0
,10
))/<code>
現在將繪製數據的散點圖。
<code>plt
.scatter
(a
,b
)/<code>
%matplotlibinlin魔術命令允許在Jupyter Notebook中可視化圖形。
設置環境變量
這個魔術命令可以做三件事——列出所有的環境變量,獲取一個特定環境變量的值,併為一個變量設置一個值。
不帶參數的%env將列出所有環境變量。
帶有單個參數的%env將返回指定參數的值。
' %env變量值:變量'將設置指定變量名的值。
對象的詳細信息
%pinfo提供了與它一起傳遞的對象的詳細信息。它與對象的功能相似。
在下面的代碼片段中,傳遞了一個簡單的字符串' a ',用%pinfo來獲取它的詳細信息。
<code>a ="The World Makes Sense!"
%pinfo a/<code>
在上面的輸出中,%pinfo提供了關於字符串對象的所有信息。
可以使用' %lsmagic '命令找到所有魔術命令列表。
這就是提高工作效率,節省時間的十大魔術命令,希望能夠幫助到你。
留言點贊關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範