全文共1899字,預計學習時長8分鐘
圖源:unsplash
Python之所以能成為最通用的程式語言,與其集成新功能時的靈活性分不開。這就不得不提到魔術命令——添加到pythonshell的重要特性之一。
python中的魔術命令到底是什麼?
魔術命令是常規python代碼的增強,通常以「%」字符為前綴。這些命令由IPython內核提供,基本上是為了解決常見問題而添加的,同時也為代碼提供了一些快捷方式。
魔術命令有兩種類型:%前綴和%%前綴。% 前綴表示命令在一行代碼上操作,而%% 前綴允許命令在整個計算單元上操作。
下面是一些魔術命令及其實現,都在JupyterNotebook中執行。
圖源:unsplash
運行外部文件
嘗試在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個變量。
a = "hello"
b = "Good Morning"
c = 1
上面的代碼顯示了所有的變量,而與它們的數據類型無關。
為了顯示特定的數據類型變量,需要在魔術命令之後傳遞數據類型。上面的代碼將所有字符串數據類型變量顯示為其輸出。
圖源:unsplash
在notebook之間共享變量
這個魔術命令允許在不同的JupyterNotebook之間共享任何變量。需要使用魔術命令傳遞原始變量。要獲取該變量,需要傳遞帶有「-r」參數的相同命令。
這是第一個notebook的樣子:
獲取這些數據所需的代碼寫在另一個notebook里。
這可能是在不同的notebook之間共享任何數據類型的數據的最簡單的方法。
顯示外部文件的內容
通常需要將外部文件中的幾行代碼複製到代碼中。%pycat允許在任何目錄中顯示任何文件的內容,而不是通過冗長的過程來獲取文件並將其打開以進行複製。
它將外部文件的所有內容顯示為其輸出。就其應用而言,可以看作是%writefile的反向。
圖源:unsplash
執行html腳本
%% html允許在單元中編寫html代碼。現在,單元將充當一個html編輯器,輸出單元的html。
下面的代碼包含一個用html創建的簡單表。可以注意到html輸出顯示了預期的表。
%%html
Name
Country
Age
Sid
India
22
Dave
UK
28
提示:可以使用類似於HTML魔術命令的%%jsmagic命令在單元中運行Javascript代碼。
顯示Matplotlib圖
%matplotlibinline魔術命令是最流行的命令。這個命令允許Jupyternotebook在notebook中顯示matplotlib圖形。這個命令激活matplotlib對Jupyter Notebook的交互式支持。
import random
import matplotlib.pyplot as plt
%matplotlib inline
已經導入了一些需要解釋命令功能的庫。
現在將創建兩個隨機列表來繪製圖形:
a = []
b = []
for i in range(10):
a.append(random.randint(0,10))
b.append(random.randint(0,10))
現在將繪製數據的散點圖。
plt.scatter(a,b)
%matplotlibinlin魔術命令允許在Jupyter Notebook中可視化圖形。
設置環境變量
這個魔術命令可以做三件事——列出所有的環境變量,獲取一個特定環境變量的值,並為一個變量設置一個值。
不帶參數的%env將列出所有環境變量。
帶有單個參數的%env將返回指定參數的值。
' %env變量值:變量'將設置指定變量名的值。
圖源:unsplash
對象的詳細信息
%pinfo提供了與它一起傳遞的對象的詳細信息。它與對象的功能相似。
在下面的代碼片段中,傳遞了一個簡單的字符串' a ',用%pinfo來獲取它的詳細信息。
a = "The World Makes Sense!"
%pinfo a
在上面的輸出中,%pinfo提供了關於字符串對象的所有信息。
可以使用' %lsmagic '命令找到所有魔術命令列表。
這就是提高工作效率,節省時間的十大魔術命令,希望能夠幫助到你。
留言點贊關注
我們一起分享AI學習與發展的乾貨
如轉載,請後台留言,遵守轉載規範