注意
前往結尾以下載完整的範例程式碼。或透過 JupyterLite 或 Binder 在您的瀏覽器中執行此範例
擷取輸出表示法#
此範例示範了組態 capture_repr
(控制擷取的輸出) 的運作方式。預設的 capture_repr
設定是 capture_repr: ('_repr_html_', '__repr__')
,並且在建置 Sphinx-Gallery 文件時使用。此設定擷取的輸出會在此範例中示範。也會說明使用其他 capture_repr
設定會擷取的輸出差異。
因為沒有資料導向標準輸出,且最後一個語句是賦值,而不是表達式,所以沒有擷取以下程式碼區塊的任何內容。
如果您希望擷取 b
的值,您需要使用
10
Sphinx-Gallery 會先嘗試擷取 b
的 _repr_html_
,因為這是 capture_repr
元組中的第一個「表示法」方法。由於 b
不存在此方法,Sphinx-Gallery 會繼續嘗試擷取 __repr__
方法,這是元組中的第二個方法。由於 b
存在此方法,因此它會被擷取,並且會在上方看到輸出。
以下程式碼區塊中使用 pandas 資料框架,以提供具有 _repr_html_
方法的表達式範例。
# example 3
import pandas as pd
df = pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]})
df
pandas 資料框架 df
同時具有 __repr__
和 _repr_html_
方法。由於 _repr_html_
出現在 capture_repr
元組中的第一個位置,因此會優先擷取 _repr_html_
,而不是 __repr__
。
對於以下範例,有資料導向標準輸出,且最後一個語句是表達式。
Hello world
12
Statsmodels 表格也應適當地設定樣式
# example 5
import numpy as np
import statsmodels.iolib.table
statsmodels.iolib.table.SimpleTable(np.zeros((3, 3)))
print()
輸出到標準輸出,這始終會被擷取。因此,會擷取字串 'Hello world'
。也會擷取最後一個表達式的「表示法」。同樣地,由於此表達式 a + b
沒有 _repr_html_
方法,因此會擷取 __repr__
方法。
Matplotlib 輸出#
Matplotlib 函數呼叫通常會傳回 Matplotlib 物件,並輸出圖形。對於最後一個語句是 Matplotlib 表達式的程式碼區塊,會擷取物件的「表示法」以及繪圖。這是因為 Matplotlib 物件具有 __repr__
方法,且我們的 capture_repr
元組包含 __repr__
。請注意,Matplotlib 物件也具有 __str__
方法。
在以下範例中,matplotlib.pyplot.plot()
會傳回代表繪製資料的 Line2D
物件清單,並且會擷取清單的 __repr__
以及圖形
import matplotlib.pyplot as plt
plt.plot([1, 2, 3])

[<matplotlib.lines.Line2D object at 0x7f27dcf9aec0>]
為了避免擷取文字表示法,您可以將最後一個 Matplotlib 表達式賦值給暫時變數

或者,您可以在程式碼區塊的結尾新增 plt.show()
,它不會傳回任何內容

capture_repr
組態#
capture_repr
組態預設為 ('_repr_html_', '__repr__')
。這會指示 Sphinx-Gallery 擷取程式碼區塊最後一個語句的「表示法」,如果它是表達式。Sphinx-Gallery 會根據「表示法」在元組中出現的順序執行此操作。使用預設的 capture_repr
設定,會先嘗試擷取 _repr_html_
。如果此方法不存在,則會擷取 __repr__
方法。如果 __repr__
也不存在 (對於非使用者定義的物件不太可能),則不會擷取任何內容。例如,如果將組態設定為 'capture_repr': ('_repr_html_')
,則不會擷取範例 2 的任何內容,因為 b
沒有 _repr_html_
。您可以變更 capture_repr
元組中的「表示法」,以微調在您的範例 .py
檔案中擷取的內容。
若要僅擷取導向標準輸出的資料,您可以將 capture_repr
設定為空元組: capture_repr: ()
。使用此設定,僅會擷取導向標準輸出的資料。對於上述範例,僅會擷取範例 4 的輸出。儘管最後一個語句是範例 2、3 和 4 的表達式,但不會輸出最後一個表達式的任何「表示法」。您需要將 print()
新增至最後一個表達式,以擷取它的「表示法」。空元組設定模擬 v0.5.0 之前的 Sphinx-Gallery 行為,當時引入了此組態。
腳本總執行時間:(0 分鐘 2.538 秒)
估計記憶體使用量: 181 MB