[x]* 在 python 函数文档中是什么意思?
What does [x]* mean in python function documention?
我想为 python 中的 urllib.request.urlopen 指定超时参数 3.
docs 说:
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
[timeout, ]*
是什么意思?
我认为所有可选的命名参数(data=None
、cafile=None
...)必须出现在所有未命名参数之前。
这里看起来 timeout
是一个未命名的参数。但是它出现在之后 data
.
只看那个文档,我不知道是否使用:
urlopen(url, 123)
urlopen(url, timeout=123)
urlopen(url, [123])
urlopen(url, [123]*)
从this post可以看出正确答案是urlopen(url, timeout=123)
。
但如果是这样的话,为什么文档说 [timeout, ]*
,为什么不直接说 timeout=None
?
这是独立特征的组合 - 方括号和星号。
[timeout, ]
表示 timeout
是可选参数 - 为简化起见,您可以省略括号和括号内的所有内容 - 您将得到 urllib.request.urlopen(url, data=None, *, cafile=None, capath=None, cadefault=False, context=None)
.
*
表示以下所有参数都是关键字参数 - 您必须指定参数名称。
看看实际的 source 会很有帮助,它说:
def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
*, cafile=None, capath=None, cadefault=False, context=None):
// actual implementation
实际上比文档更清楚。
我想为 python 中的 urllib.request.urlopen 指定超时参数 3.
docs 说:
urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
[timeout, ]*
是什么意思?
我认为所有可选的命名参数(data=None
、cafile=None
...)必须出现在所有未命名参数之前。
这里看起来 timeout
是一个未命名的参数。但是它出现在之后 data
.
只看那个文档,我不知道是否使用:
urlopen(url, 123)
urlopen(url, timeout=123)
urlopen(url, [123])
urlopen(url, [123]*)
从this post可以看出正确答案是urlopen(url, timeout=123)
。
但如果是这样的话,为什么文档说 [timeout, ]*
,为什么不直接说 timeout=None
?
这是独立特征的组合 - 方括号和星号。
[timeout, ]
表示 timeout
是可选参数 - 为简化起见,您可以省略括号和括号内的所有内容 - 您将得到 urllib.request.urlopen(url, data=None, *, cafile=None, capath=None, cadefault=False, context=None)
.
*
表示以下所有参数都是关键字参数 - 您必须指定参数名称。
看看实际的 source 会很有帮助,它说:
def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
*, cafile=None, capath=None, cadefault=False, context=None):
// actual implementation
实际上比文档更清楚。