我正在尝试了解 Python *args 和 **kwargs 的操作。让我们考虑一个有 4 个参数的函数。我们可以使用 *x
将列表 x 作为参数传递给函数def foo(a,b,c,d):
print a,b,c,d
x=[1,2,3,4]
foo(x)
#TypeError: foo() takes exactly 4 arguments (1 given)
foo(*x)
#1 2 3 4 # works fine
print "%d %d %d %d" %(*x)
#SyntaxError: invalid syntax
如果我弄对了,如果 foo() *x 解压值...那么为什么 print "%d %d %d %d"%(*x)
会出错??
注意 - 我对如何在一行中打印列表不感兴趣,只是好奇为什么 print "%d %d %d %d"%(*x)
不起作用。
最佳答案
*x
将 x
的内容解压为参数,而不是元组;元组是 %
应该传递的内容。
print "%d %d %d %d" % tuple(x)
关于python - 为什么 *args 不适用于字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11562072/