在使用单个参数测试 Python 参数列表时,我发现print
.
>>> def hi(*x):
... print(x)
...
>>> hi()
()
>>> hi(1,2)
(1, 2)
>>> hi(1)
(1,)
谁能向我解释一下hi(1)
结果中的最后一个逗号是什么意思(即(1,)
)
在使用单个参数测试 Python 参数列表时,我发现print
.
>>> def hi(*x):
... print(x)
...
>>> hi()
()
>>> hi(1,2)
(1, 2)
>>> hi(1)
(1,)
谁能向我解释一下hi(1)
结果中的最后一个逗号是什么意思(即(1,)
)
实际上这种行为只是有点“奇怪”。:-)
您的参数x
以星号为前缀,这意味着您传递给函数的所有参数都将“汇总”成一个元组,并且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
,所有后续参数都被打包到 tupley
中。您可能只是发现 Python 表示具有 0 或 1 个组件的元组的方式有点奇怪,但是当您意识到它(1)
必须是一个数字并且必须有某种方法来表示单元素元组时,它就很有意义了。Python 只是使用尾随逗号作为约定,仅此而已。