问题
想弄清楚默认参数,*args,kwargs,如果混用,会怎样,但是报错(不明白它的报错含义)
更加深入的问题是: Python的形参是如何放置的? 传入的时候有什么讲究?或: 是否有一篇文章,深入地从底层机制讲解这方面的问题?
相关代码
以下函数报: TypeError: testfunc() got multiple values for keyword argument 'a' def testfunc(a=1, b=2, c=3, d=4, *args): print a print b print c print d args = (1, 2, 3, 4) testfunc(a=10, b=20, c=30, d=40, *args) def test2(a=1, b=2, c=3, d=4, *args, **kwargs): print a print b print c print d args = (1, 2, 3, 4) kwargs = {'a': 1, 'b':2} test2(a=10, *args, **kwargs)
重现
拷贝代码,运行之
报错信息
TypeError: testfunc() got multiple values for keyword argument 'a'
上下文环境
Python2
windows7
尝试解决
貌似很多: https://www.google.co.jp/sear...
的确是你调用函数的错误,应该是testfunc(10, 20, 30, 40, *args),
想了解具体可参照:
http://docs.pythontab.com/int...
或者Python cookbook中关于默认参数的设置:
http://python3-cookbook.readt...