Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法用Python打印**kwargs_Python - Fatal编程技术网

有没有办法用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}