python 方法的参数列表中的“=- 1”是什么?
What is "=- 1" in a python method's argument list?
在下一页:subprocess.popen,在popen()
的参数列表中有一个“pipesize=- 1
”。由于它在几个地方弹出,所以它似乎不是错字。
然而,至于这可能是什么,到目前为止我还没有好奇心。
“=- 1
”是什么意思?
这可能是文档错误。它应该看起来像 pipesize = -1
。但是,无论如何,它是参数的默认值。
函数中的参数和参数
默认情况下,函数签名中的所有参数都必须在调用函数时传递参数:
def f(x):
pass
f("argument for x")
上面的代码将成功 运行,没有任何错误。 x
是函数 f
的必需参数,我正确地将位置参数传递给 x
。
如果我没有将实参传递给必需的参数会怎样?
当给出此代码时,它会导致异常调用 TypeError
:
def f(x):
pass
f() # TypeError: f() missing 1 required positional argument: 'x'
发生这种情况是因为,如上所述,x
必须根据 f
的当前函数签名传递。
指定可选参数
现在,我将在函数 f
:
中为参数 x
提供默认值
def f(x=None):
pass
f()
此代码也将成功 运行,就像函数 f
的第一个实现一样。但是,这里的函数签名看起来不同,我们在调用 f
时没有传递任何东西。 x=None
说“如果 x
没有在函数调用中传递参数给 f
,它应该作为参数传递 None
”。
默认与 Non-Default 参数
重要的是要注意,在函数签名中,具有默认值的参数必须出现在所有必需参数之后:
def f(x=None, y):
pass
此 f
的实施将导致 SyntaxError: non-default argument follows default argument
。在所有 non-default 个参数之后,必须在函数签名中指定默认参数是有道理的。如果 Python 没有为上面 f
的语法错误的函数签名引发错误,我们可能会在我们不想要的时候意外地将参数传递给 x
而不是 y
到.
在下一页:subprocess.popen,在popen()
的参数列表中有一个“pipesize=- 1
”。由于它在几个地方弹出,所以它似乎不是错字。
然而,至于这可能是什么,到目前为止我还没有好奇心。
“=- 1
”是什么意思?
这可能是文档错误。它应该看起来像 pipesize = -1
。但是,无论如何,它是参数的默认值。
函数中的参数和参数
默认情况下,函数签名中的所有参数都必须在调用函数时传递参数:
def f(x):
pass
f("argument for x")
上面的代码将成功 运行,没有任何错误。 x
是函数 f
的必需参数,我正确地将位置参数传递给 x
。
如果我没有将实参传递给必需的参数会怎样?
当给出此代码时,它会导致异常调用 TypeError
:
def f(x):
pass
f() # TypeError: f() missing 1 required positional argument: 'x'
发生这种情况是因为,如上所述,x
必须根据 f
的当前函数签名传递。
指定可选参数
现在,我将在函数 f
:
x
提供默认值
def f(x=None):
pass
f()
此代码也将成功 运行,就像函数 f
的第一个实现一样。但是,这里的函数签名看起来不同,我们在调用 f
时没有传递任何东西。 x=None
说“如果 x
没有在函数调用中传递参数给 f
,它应该作为参数传递 None
”。
默认与 Non-Default 参数
重要的是要注意,在函数签名中,具有默认值的参数必须出现在所有必需参数之后:
def f(x=None, y):
pass
此 f
的实施将导致 SyntaxError: non-default argument follows default argument
。在所有 non-default 个参数之后,必须在函数签名中指定默认参数是有道理的。如果 Python 没有为上面 f
的语法错误的函数签名引发错误,我们可能会在我们不想要的时候意外地将参数传递给 x
而不是 y
到.