关于 Python 函数参数的分配与收集问题

为什么下面执行结果是这样的?

>>> def func(*args, **kw):
        print(args)
        print(kw)

>>> t=(1,2,3)
>>> d={'a':'A','b':'B','c':'C'}

>>> func(*t,*d) #字典解包后变成键的元组?
(1, 2, 3, 'a', 'b', 'c')
{}

>>> func(args=t,kw=d) #字典优先?
()
{'args': (1, 2, 3), 'kw': {'a': 'A', 'b': 'B', 'c': 'C'}}

>>> func(t,kw=**d) #为什么语法错误?
SyntaxError: invalid syntax

>>> func(*t,kw=**d) #为什么语法错误? x2
SyntaxError: invalid syntax
阅读 1.6k
1 个回答

func(*args, **kw) 里面 args 的结构是元组,而 kw 对应的是字典。

当你写的函数里面可能会传入更多的参数时,比如说:

func(1, 2, 3, 'a'=2, 'b'=3)

你会得到:

args=(1, 2, 3), kw={'a':2, 'b':3}
  • 1 对于 func(*t, *d),你猜对了,python 是这样处理的
  • 2 对于 func(args=t, kw=d),看完我上面写的你应该能明白了吧~

希望对你有帮助!~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题