def f(*a), 向 def f(*a) 是以 tuple 或者 list 的形式传输, 在函数内部是以 tuple 的形式来进行处理, 所以调用的时候, 需要先组装出一个 list 或 tuple, 输入单个数字等按照 tuple 处理. 定义可变参数和定义 list 或 tuple 参数相比, 仅仅在参数前面加了一个 * 号. 在函数内部, 参数 numbers 接收到的是一个 tuple, 因此, 函数代码完全不变. 但是, 调用该函数时, 可以传入任意个参数, 包括 0 个参数.
在 def f(**a) 中, 可变参数允许你传入 0 个或任意个参数, 这些可变参数在函数调用时自动组装为一个 tuple. 而关键字参数允许你传入 0 个或任意个含参数名的参数, 这些关键字参数在函数内部自动组装为一个 dict.
两种类型简化处理方法:*a 的形式
- >>> nums = [1, 2, 3]
- >>> calc(*nums)
- 14
**a 的形式
- >>> kw = {
- 'city': 'Beijing', 'job': 'Engineer'
- }
- >>> person('Jack', 24, **kw)
- name: Jack age: 24 other: {
- 'city': 'Beijing', 'job': 'Engineer'
- }
参考文章: https://www.cnblogs.com/gongyu2018/p/8805183.html
2019-09-09 21:17:54
来源: http://www.bubuko.com/infodetail-3190339.html