搜尋

首頁  >  問答  >  主體

Python2函数,默认参数报SyntaxError

问题

想弄清楚默认参数,*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...


高洛峰高洛峰2981 天前871

全部回覆(1)我來回復

  • 三叔

    三叔2016-10-22 15:24:39

    的确是你调用函数的错误,应该是testfunc(10, 20, 30, 40, *args),
    想了解具体可参照:
    http://docs.pythontab.com/int...

    或者Python cookbook中关于默认参数的设置:

    http://python3-cookbook.readt...


    回覆
    0
  • 取消回覆