簡體   English   中英

如何從Python的官方文檔中讀取函數簽名

[英]How does one read the function signatures from Python's official documentation

如果瀏覽官方Python文檔 ,可以看到不同類型的函數(或類)簽名。

例如

random.uniform(a,b)

很容易理解:你傳遞了兩個對象ab (它們是浮點數,它從它們之間的間隔返回一個隨機數)。 同樣簡單易懂的是來自的簽名

SSLSocket.getpeercert(binary_form =假)

其中還指定了參數的默認值,以防它在沒有任何參數的情況下被調用。


但后來也有與真奇怪簽名功能

min(可迭代,* [,鍵,默認])

要么

readline.append_history_file(nelements [,filename])

要么

csv.register_dialect(name [,dialect [,** fmtparams]])

這些都意味着什么? 是否有一些參考指南解釋如何閱讀name[, dialect[, **fmtparams]]

這些示例只是從官方Python文檔中隨機抽取而來,並未涵蓋我遇到的所有簽名類型。 我需要一般性解釋如何閱讀這些簽名。

注意:我知道之前已經問過這個問題,但是如果有人這么做就找不到了,請給我發消息,我會刪除我的答案......

這主要是簡化的EBNF表示法 register_dialect(name[, dialect[, **fmtparams]])表示register_dialect函數采用強制name參數,兼性dialect參數和兼容性任意關鍵字參數。

以下示例中的星號表示keydefault是僅關鍵字參數:

min(可迭代,* [,鍵,默認])

方括號中的參數是可選的,因此在filename下面是可選的:

readline.append_history_file(nelements [,filename])

帶有單個星號的參數意味着該函數可以包含任意數量的位置參數,例如:

a_function(a,b,* args)

帶有2個星號的參數意味着該函數可以包含任意數量的關鍵字參數,例如:

class dict(mapping,** kwarg)

Python文檔中解釋了所有內容: 函數定義

常見的表示法是方括號[]表示可選值 我不確定它的起源,可能是BNF語法。

*代表任意數量的位置 **表示任意數量的關鍵字句子

***是合法的python語法。 例如,你可以有一個看起來像func(*args)的函數簽名。 這些在語言參考中定義。 更簡單的閱讀可能是python教程

方括號中的參數是可選的。 這意味着它們具有默認值,如果您不提供值,則使用該值。 如果您閱讀功能說明,通常會解釋。

如果嵌套括號,則表示如果未提供外括號中的至少一個參數,則無法提供內括號中的參數。 例如:

csv.register_dialect(name [,dialect [,** fmtparams]])

表示: csv.register_dialect(name)有效, csv.register_dialect(name, dialect)有效, csv.register_dialect(name, dialect, **fmtparams)有效,但csv.register_dialect(name, **fmtparams)不有效有效。

*和**是args和kwargs, 這里有更多參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM