如何从 Python 的官方文档中读取函数签名
How does one read the function signatures from Python's official documentation
如果浏览 official Python docs,可以看到各种函数(或 class)签名。
对于example
random.uniform(a, b)
很容易理解:您将两个对象 a
和 b
传递给它(它们是浮点数,它 returns 从它们之间的间隔中随机数)。同样简单易懂的是签名 from
SSLSocket.getpeercert(binary_form=False)
其中还指定了参数的默认值,以防在没有任何参数的情况下调用它。
但是还有一些函数的签名非常奇怪like
min(iterable, *[, key, default])
readline.append_history_file(nelements[, filename])
csv.register_dialect(name[, dialect[, **fmtparams]])
这些都是什么意思?是否有一些参考指南解释如何阅读 name[, dialect[, **fmtparams]]
?
这些示例只是从官方 Python 文档中随机抽取的,并未涵盖我遇到的所有签名类型。我需要一个关于如何阅读这些签名的一般性解释。
注意:我知道之前有人问过这个问题,但找不到复制品,所以如果有人找到了,请点我,我会删除我的答案...
这主要是一个simplified EBNF notation。 register_dialect(name[, dialect[, **fmtparams]])
表示 register_dialect
函数采用强制性 name
参数、兼性 dialect
参数和兼性任意关键字参数。
一个常见的表示法是方括号 []
表示 可选值 。我不确定这是从哪里来的,可能是 BNF 语法。
*
表示 任意数量的位置参数 。
**
表示 任意数量的关键字参数 。
*
和 **
是合法的 python 语法。例如,你可以有一个看起来像 func(*args)
的函数签名。这些在 language reference. An easier reading might be the python tutorial.
中定义
方括号中的参数是可选的。这意味着它们具有默认值,如果您不提供值,则会使用该默认值。如果你看了功能说明,一般都会有解释。
当你有嵌套括号时,意味着如果至少有一个外括号中的参数没有提供,那么内括号中的参数也不能提供。例如:
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,here 关于它们的更多参考。
下例中的星号表示 key 和 default 是仅关键字参数:
min(iterable, *[, key, default])
方括号中的参数是可选的,所以下面文件名是可选的:
readline.append_history_file(nelements[, filename])
带有单个星号的参数意味着该函数可以有任意数量的位置参数,例如:
a_function(a, b, *args)
带有 2 个星号的参数表示该函数可以有任意数量的 关键字 个参数,例如:
class dict(mapping, **kwarg)
一切都在 Python 文档中进行了解释:Function definitions
如果浏览 official Python docs,可以看到各种函数(或 class)签名。
对于example
random.uniform(a, b)
很容易理解:您将两个对象 a
和 b
传递给它(它们是浮点数,它 returns 从它们之间的间隔中随机数)。同样简单易懂的是签名 from
SSLSocket.getpeercert(binary_form=False)
其中还指定了参数的默认值,以防在没有任何参数的情况下调用它。
但是还有一些函数的签名非常奇怪like
min(iterable, *[, key, default])
readline.append_history_file(nelements[, filename])
csv.register_dialect(name[, dialect[, **fmtparams]])
这些都是什么意思?是否有一些参考指南解释如何阅读 name[, dialect[, **fmtparams]]
?
这些示例只是从官方 Python 文档中随机抽取的,并未涵盖我遇到的所有签名类型。我需要一个关于如何阅读这些签名的一般性解释。
注意:我知道之前有人问过这个问题,但找不到复制品,所以如果有人找到了,请点我,我会删除我的答案...
这主要是一个simplified EBNF notation。 register_dialect(name[, dialect[, **fmtparams]])
表示 register_dialect
函数采用强制性 name
参数、兼性 dialect
参数和兼性任意关键字参数。
一个常见的表示法是方括号 []
表示 可选值 。我不确定这是从哪里来的,可能是 BNF 语法。
*
表示 任意数量的位置参数 。
**
表示 任意数量的关键字参数 。
*
和 **
是合法的 python 语法。例如,你可以有一个看起来像 func(*args)
的函数签名。这些在 language reference. An easier reading might be the python tutorial.
方括号中的参数是可选的。这意味着它们具有默认值,如果您不提供值,则会使用该默认值。如果你看了功能说明,一般都会有解释。
当你有嵌套括号时,意味着如果至少有一个外括号中的参数没有提供,那么内括号中的参数也不能提供。例如:
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,here 关于它们的更多参考。
下例中的星号表示 key 和 default 是仅关键字参数:
min(iterable, *[, key, default])
方括号中的参数是可选的,所以下面文件名是可选的:
readline.append_history_file(nelements[, filename])
带有单个星号的参数意味着该函数可以有任意数量的位置参数,例如:
a_function(a, b, *args)
带有 2 个星号的参数表示该函数可以有任意数量的 关键字 个参数,例如:
class dict(mapping, **kwarg)
一切都在 Python 文档中进行了解释:Function definitions