分别用Python的*和**语法将元组和字典映射到位置参数和关键字参数

* 语法

用于函数传参中,对于需要多个位置参数(positional argument)的函数,将元组或列表展开(unpacking)为一个或多个位置参数。
注:其实只要是可迭代(iterable)的对象都可以通过此方式展开,而不仅仅是前面讲的元组或列表。

row = ('ACME', 50, 91.5)
lis = list(row)
print(*row)
print(*lis)

等效于print('ACME', 50, 91.5)
输出:
ACME 50 91.5
ACME 50 91.5

** 语法

用于函数传参中,对于需要多个关键字参数(keyword argument)的函数,将词典展开(unpacking)为一个或多个关键字参数

d={ 'end':'!!!\n', 'sep':', '}
print('Hello', 'world', **d)

输出:
Hello, world!!!

同时使用 * 和 ** 语法

row = ('ACME', 50, 91.5)
d={ 'end':'!!!\n', 'sep':', '}
print(*row, **d)

输出:
ACME, 50, 91.5!!!

Exception Note

注意:print(*row, **d)print(sep=', ', end='!!!\n', *row) 的写法都是OK的,但是不可以写成print(**d, *row). 因为位置参数不可在关键字参数之后。

否则将提示
SyntaxError: iterable argument unpacking follows keyword argument unpacking

参考

*args 和 **kwargs - 《Python 进阶》on Gitbook

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容