Python2函数,默认参数报SyntaxError
高洛峰
高洛峰 2016-10-22 15:24:24
0
1
870

问题

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


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(1)
三叔

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

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

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


Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan