本帖最后由 不知道呀 于 2021-11-5 13:20 编辑
应用场景
函数的定义与函数参数传递
调用函数时传递*
此时*理解为解包的过程,如果有个函数拥有固定的参数,我们可以给该函数传递一个列表或者是元组,并在列表或元组的前面加上*,那么列表或者元组中的各个元素会自动的拆解给各个参数。如下面的示例:
[Python] 纯文本查看 复制代码 def A(name, age, index):
return {'name': name, 'age': age, 'index': index}
arg1 = ("小明", 22, 1)
print(A(*arg1))
结果为:
[Python] 纯文本查看 复制代码 {'name': '小明', 'age': 22, 'index': 1}
注意: 使用解包的时候,若函数接受的参数是固定,那么解包出来的参数个数应与接受参数的数量匹配,否则不论解包出来参数是多与少都会报错。
函数定义时使用*
此时代表了函数接收不定长的参数,适用于无法确定函数需要传入自变量个数的情况。此时,但参数传递过来之后,会形成一个元组,再设置给定义的变量中。示例:
[Python] 纯文本查看 复制代码 def A(*number):
print(number)
arg = ("小明", 22, 1)
A(*arg)
A(1,2,3,4,5,6)
A(1)
结果为:
[Python] 纯文本查看 复制代码 ('小明', 22, 1)
(1, 2, 3, 4, 5, 6)
(1,)
调用函数时传递**
此时可以理解为解析字典,然后按照key=value的形式给函数传递参数。示例:
[Python] 纯文本查看 复制代码 def A(name, age):
print({"name": name, "age": age})
arg = {"name":"小明", "age":22}
arg = {"age":22, "name":"小明",}
A(**arg)
A(**arg1)
A(name="小明", age=22)
结果为:
[Python] 纯文本查看 复制代码 {'name': '小明', 'age': 22}
{'name': '小明', 'age': 22}
{'name': '小明', 'age': 22}
注意,这里参数的数量也需要匹配。
函数定义时使用**
将以赋值形式传递过来的参数,构建为一个字典,一下示例构建了一个可以接受任何参数的函数:
[Python] 纯文本查看 复制代码 def A(*arg1, **arg2):
print(arg1)
print(arg2)
arg1 = (33, "xiaohong")
arg2 = {"name":"小明", "age":22}
A(*arg1, **arg2)
A(33, "小红", name="小明", age=22)
结果为:
[Python] 纯文本查看 复制代码 (33, 'xiaohong')
{'name': '小明', 'age': 22}
(33, '小红')
{'name': '小明', 'age': 22}
注意,赋值类型的参数与普通参数需按照函数定义时的顺序摆放。
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与联系我们,我们会予以更改或删除相关文章,以保证您的权益!
|