有没有办法用Python打印**kwargs
我只是好奇有没有办法用Python打印**kwargs,python,Python,我只是好奇**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
**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”是此函数的无效关键字参数
(有时它显示“y”是无效关键字)
我还尝试将其分配给变量,然后打印它,但再次出现错误(SyntaxError:invalid syntax
):
请看这是否有效:
def print_dict(**this):
print(this)
mydict = {'x':1,'y':2,'z':3}
print_dict(**mydict)
但是,如果我执行print(**this)
,它将给出错误,而不是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
?您必须为字典构建自己的格式(没有其他方法是**kwargs
):
语法callable(**dictionary)
应用字典,就像使用单独的关键字参数一样
所以你的例子是:
mydict = {'x':1,'y':2,'z':3}
print(**mydict)
内部翻译为:
print(x=1, y=2, z=3)
其中,确切顺序取决于当前随机散列种子。由于print()
不支持这些关键字参数,因此调用失败
另一个print()
调用成功,因为您将值作为单独的位置参数传入:
tuple_num = (1, 2, 3, 4)
print(*tuple_num)
实际上与以下内容相同:
print(1, 2, 3, 4)
而print()
函数支持单独的参数,方法是使用sep
值(默认情况下为空格)逐个写出参数
**字典
在调用之外是无效的语法。由于callable(**dictionary)
是调用语法的一部分,而不是一个对象,因此没有什么可打印的
最多,您可以将字典的格式设置为调用:
print(', '.join(['{}={!r}'.format(k, v) for k, v in mydict.items()]))
在python 3中使用f字符串对我很有用:
def mixAndMatch(*args, **kwargs):
print(f' Args: {args}' )
print(f' Kwargs: {kwargs}’ )
mixAndMatch('one', 'two', arg3 = 'three', arg4 = 'four’)
>>>
Args: ('one', 'two')
Kwargs: {'arg3': 'three', 'arg4': 'four'}
使用
pprint
软件包,轻松打印kwargs
:
from pprint import pprint
pprint(kwargs)
调用请求的输出示例。get
:
{'allow_redirects': True, 'verify': False}
这是一个启发性的答案。
from pprint import pprint
pprint(kwargs)
{'allow_redirects': True, 'verify': False}