def log(*args, **kwargs):
print('[Log]', args)
print('[Log]', *args)
print('[Log]', kwargs)
print('[Log]', **kwargs)
if __name__ == '__main__':
log(1, 2, host='haha', port=3000)
----------------------------------------------------------------------------------------------------------------------
前三行都是能正常输出的
输出结果如下:
[Log] (1, 2)
[Log] 1 2
[Log] {'port': 3000, 'host': 'haha'}
但是第四行会报错
报错信息如下:
Traceback (most recent call last):
File "/Users/liulang/PycharmProjects/class2/
server.py", line 31, in <module>
log(1, 2, host='haha', port=3000)
File "/Users/liulang/PycharmProjects/class2/
server.py", line 28, in log
print('[Log]', **kwargs)
TypeError: 'port' is an invalid keyword argument for this function
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 评论显示问题,所以上面代码的空格无法显示。)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/602647
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.