理解 Python 中的 *args 和 **kwargs(理解音乐的前提条件是音乐的理论知识)
301
2022-08-01
1、形参 与 实参是什么?
形参(形式参数):指的是在定义函数时,括号内定义的参数,形参其实就变量名
实参(实际参数),指的是在调用函数时,括号内传入的值,实参其实就变量的值
1 #x,y是形参
2 def func(x,y): #x=10,y=11
3 print(x)
4 print(y)
1 #10,11是实参
2 func(10,11)
注意:
实参值(变量的值)与形参(变量名)的绑定关系只在函数调用时才会生效/绑定, 在函数调用结束后就立刻解除绑定
2、位置参数 位置形参 位置实参
位置即顺序,位置参参数指的就是按照从左到右的顺序依次定义的参数
3、 关键字参数
在调用函数时,按照key=value的形式定义的实参,称为关键字参数
4、默认参数
在定义阶段,已经为某个形参赋值,那么该形参叫默认参数
(1) 定义阶段已有值,代表着调用阶段可以不传值
(2) 位置形参必须在默认参数的前面
1 def func(y=i,x): #报错,位置应该在默认形参的前面
2 pass
(3) 默认参数的值只在定义阶段赋值一次,也就是说默认参数的值再定义阶段就固定死了
(4)记住:默认参数的值应该设置为不可变类型
应用:
对于经常需要变化的值,需要将对应的形参定义成 位置形参
对于大多数情况值都一样的情况,需要将对应的形参定义成 默认形参
5、可变长度参数
参数的个数不固定,实参有 按位置定义(*)的实参和 按关键字定义(**)的实参
形参里包含 * **
(1)*会将溢出的位置实参全部接收,然后保存成元组的形式赋值给args
1 def foo(x,y,z,*args): #位置
2 print(x,y,z)
3 print(args) ##args=(4,5,6,7,8)
4
5 foo(1,2,3,4,5,6,7,8,)
(2) **会将溢出的关键字实参全部接收,然后保存成字典的形式赋值给kwargs
1 def foo(x,y,z,**kwargs): #关键字
2 print(x,y,z)
3 print(kwargs) # kwargs={'c':3,'a':1,'b':2}
4
5 foo(x=1,y=2,z=3,a=1,b=2,c=3)
实参里包含 * **
(1)一旦碰到实参加*,就把该实参的值打散
错误例子
1 def foo(x,y,z):
2 print(x,y,z)
3
4 foo(*[1,2,3]) #foo(1,2,3)
5 foo(*[1,2,3,4]) #foo(1,2,3,4) 多了一个 报错
6 foo(*[1,2,]) #foo(1,2,) 少了一个 报错
(2)一旦碰到实参加**,就把该实参的值打散
重点
(3)组合使用
共2页: 上一页12下一页
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~