为什么Python函数文档在可选参数的括号后包含逗号?

12 投票
5 回答
2841 浏览
提问于 2025-04-15 18:21

在Python文档中,函数签名的格式有点让人困惑。把逗号放在开括号后面而不是前面,这有什么特别的意义吗?还有,括号嵌套在一起又有什么用呢?

它们的写法是这样的:

RegexObject.match(string[, pos[, endpos]])

我本来期待看到以下其中一种写法:

RegexObject.match(string, [pos], [endpos])
RegexObject.match(string[, pos][, endpos])

5 个回答

2

因为如果不这样做,正确的写法应该是即使你不使用那些参数,也要加上逗号。方括号里的部分是可选的,所以把逗号放在方括号外面,就意味着它们不再是可选的了。比如,要调用下面这个函数,只传一个字符串:

RegexObject.match(string, [pos], [endpos])

我需要这样写:

RegexObject.match("foobar",,)

不过,这样写起来就显得不太优雅了。

2

开放的括号表示这是一个可选的参数。如果逗号在括号外面,即使你不想使用pos这个参数,你也必须输入逗号(比如说)。

22

方括号表示里面的内容是可选的,但方括号外面的内容是必须的。

根据你的写法:

RegexObject.match(string, [pos], [endpos])

我预计你需要写:

r.match("foo",,)

这里需要嵌套是因为如果你提供了第三个参数,那么你也必须提供第二个参数,尽管它是可选的。下面这种不嵌套的写法会让人困惑:

RegexObject.match(string[, pos][, endpos])

撰写回答