我只是对**kwargs
很好奇。我刚开始学习,所以在复习stackoverflow和视频教程的所有问题时,我注意到我们可以这样做
def print_dict(**kwargs):
print(kwargs)
print_dict(x=1,y=2,z=3)
输出为:{'y': 2, 'x': 1, 'z': 3}
所以我想为什么不反过来打印类似的x=1,y=2,z=3
所以我试了一下:
mydict = {'x':1,'y':2,'z':3}
print(**mydict)
但是我得到了一个错误,比如:TypeError: 'z' is an invalid keyword argument for this function
(有时它显示“y”是一个无效的关键字)。
我还尝试将其分配给变量,然后打印它,但再次出现错误(SyntaxError: invalid syntax
):
mydict = {'x':1,'y':2,'z':3}
var = **mydict
print(var)
看到这是工作:
def print_dict(**this):
print(this)
mydict = {'x':1,'y':2,'z':3}
print_dict(**mydict)
但是如果我这样做的话,它会给出错误,而不是print(this)
。
当我尝试以下代码时,我们可以打印*arg
:
def num(*tuple_num):
print(tuple_num)
print(*tuple_num)
num(1,2,3,4)
它运行良好,输出如下:
(1, 2, 3, 4)
1 2 3 4
所以我想知道是否有任何可能的解决方案/方法来打印**kwargs
?
语法
callable(**dictionary)
应用于字典,就像使用单独的关键字参数一样。你的例子是:
内部翻译为:
确切的顺序取决于当前的随机散列种子。由于
print()
不支持这些关键字参数,调用失败。另一个
print()
调用成功,因为您将值作为单独的位置参数传入:实际上与:
而
print()
函数通过在sep
值之间(默认情况下是空格)逐个写出参数来支持单独的参数。调用外部的
**dictionary
语法无效。因为callable(**dictionary)
是调用语法的一部分,而不是对象,所以没有什么可以打印的。最多,您可以格式化字典,使其看起来像调用:
您必须为字典构建自己的格式(没有其他内容是
**kwargs
):相关问题 更多 >
编程相关推荐