python - 为什么 *args 不适用于字符串格式

标签 python python-2.7

我正在尝试了解 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) 不起作用。

最佳答案

*xx 的内容解压为参数,而不是元组;元组是 % 应该传递的内容。

print "%d %d %d %d" % tuple(x)

关于python - 为什么 *args 不适用于字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11562072/

相关文章:

python - 按第二个值对嵌套列表进行排序

python - 如何将字符串列表写入文件并添加换行符?

python - 独立着色和旋转 3D VTK 字形

Python 理解随机 float

image - ROI以比原始图片更浅的颜色书写

python - Paramiko - 使用私钥连接 - 不是有效的 OPENSSH 私钥/公钥文件

Python 3 C API。初始化 MIMEText 对象失败

python - 取组中的最大值,忽略当前行的值

python - 解压生成器,生成字典

python - Python 标准库中的所有类文件对象都具有 `name` 属性吗?