1
inhzus 2019-09-20 18:58:49 +08:00 via Android
这个问题算是 Python 的基础吧,v 站之前也有过类似问题,Google 关键词 Python dict unpacking and packing。希望可以善用搜索引擎
|
3
ysc3839 2019-09-20 19:13:48 +08:00 via Android
因为 print 不接受 keyword args。
|
4
ysc3839 2019-09-20 19:15:47 +08:00 via Android
@ysc3839 更正一下:不是不接受 keyword args,是不接受 port 这个 keyword。
https://docs.python.org/3/library/functions.html#print |
5
hushao 2019-09-20 19:16:05 +08:00
理解**kwargs 在做什么就知道了
|
6
littlespider89 2019-09-20 19:18:31 +08:00
第四行相当于 print('[LOG]', port=3000, host='haha')
你看看 print 的函数签名,就知道了 |
7
oahebky 2019-09-21 17:30:09 +08:00
t = ("foo", "bar")
print("*args: ", *t) 相当于 print("*args: ", "foo", "bar") kw = {"foo": "bar"} print("**kw: ", **kw) 相当于 print("**kw: ", foo="bar") 也就是说 **kw 作为参数: 1. 并非是:func("key1=value1", "key2=value2") 2. 并非是:func(key1, value1, key2, value2) 这也是合理,因为它本来就应该是这样子。 ------ 所以有些代码可能这么写: dict_ = { "key1": "value1", "key2": "value2", } class A: def __init__(key1, key2): ...略... a = A(**dict_) ====== (因为 V2EX 评论显示问题,所以上面代码的空格无法显示。) |