Python 具有单个参数的参数列表
Python parameter list with single argument
在使用单个参数测试 Python 参数列表时,我发现 print
有一些奇怪的行为。
>>> def hi(*x):
... print(x)
...
>>> hi()
()
>>> hi(1,2)
(1, 2)
>>> hi(1)
(1,)
任何人都可以向我解释 hi(1)
结果中最后一个逗号的含义(即 (1,)
)
其实行为只是一点点"weird." :-)
你的参数 x
以星号为前缀,这意味着你传递给函数的所有参数将 "rolled up" 成一个元组, x
将是那个元组.
值 (1,)
是 Python 写入一个值的元组的方式,与 (1)
对比,后者是数字 1。
这是一个更一般的情况:
def f(x, *y):
return "x is {} and y is {}".format(x, y)
以下是一些跑步:
>>> f(1)
'x is 1 and y is ()'
>>> f(1, 2)
'x is 1 and y is (2,)'
>>> f(1, 2, 3)
'x is 1 and y is (2, 3)'
>>> f(1, 2, 3, 4)
'x is 1 and y is (2, 3, 4)'
注意第一个参数如何进入 x
以及所有后续参数如何打包到元组 y
中。您可能只是发现 Python 表示具有 0 或 1 个组件的元组的方式有点奇怪,但是当您意识到 (1)
必须是一个数字并且因此必须有某种方式来表示时,它就有意义了表示单元素元组。 Python 只是使用尾随逗号作为约定,仅此而已。
在使用单个参数测试 Python 参数列表时,我发现 print
有一些奇怪的行为。
>>> def hi(*x):
... print(x)
...
>>> hi()
()
>>> hi(1,2)
(1, 2)
>>> hi(1)
(1,)
任何人都可以向我解释 hi(1)
结果中最后一个逗号的含义(即 (1,)
)
其实行为只是一点点"weird." :-)
你的参数 x
以星号为前缀,这意味着你传递给函数的所有参数将 "rolled up" 成一个元组, x
将是那个元组.
值 (1,)
是 Python 写入一个值的元组的方式,与 (1)
对比,后者是数字 1。
这是一个更一般的情况:
def f(x, *y):
return "x is {} and y is {}".format(x, y)
以下是一些跑步:
>>> f(1)
'x is 1 and y is ()'
>>> f(1, 2)
'x is 1 and y is (2,)'
>>> f(1, 2, 3)
'x is 1 and y is (2, 3)'
>>> f(1, 2, 3, 4)
'x is 1 and y is (2, 3, 4)'
注意第一个参数如何进入 x
以及所有后续参数如何打包到元组 y
中。您可能只是发现 Python 表示具有 0 或 1 个组件的元组的方式有点奇怪,但是当您意识到 (1)
必须是一个数字并且因此必须有某种方式来表示时,它就有意义了表示单元素元组。 Python 只是使用尾随逗号作为约定,仅此而已。