分别用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

你可能感兴趣的:(分别用Python的*和**语法将元组和字典映射到位置参数和关键字参数)