Python中的参数
Python中的参数
- 注:形参与实参不在讲解,住哟啊讲解动态参数;
1、默认参数
-
def func(a,b=10) print(a,b) #传入参数的时候b可以不写,默认是10,也可以传入
2、动态参数
- 定义一个函数,不知道需要多少个参数;
2.1 *args
-
*,只要是以
*
开头即可,只是约定俗成写成*args
-
传参是要按照位置传参
-
args在函数内部是一个元组
def func(*args): print(args) # 只能按位置传参 func(11,22,33) func(1) func()
2.2 **kwargs
-
**,只要是以
*
*开头即可,只是约定俗成写成**kwargs
-
只能按照关键字传参
-
kwargs在函数内部是一个字典
-
不传入就是空字典
def func2(**kwargs): print(kwargs) # 关键字传参 func2(name="hello",age=18)
2.3 *args 和 **kwargs
-
即可以按照位置传参,也可以按照关键字传参,使用较多 ;
-
kwargs要在·args后面
def func3(*args,**kwargs): print(args,kwargs) func3(1,2,3,4,5,name="zqbj",age="20")#关键字传参在位置参数后面
-
注意:传参的时候一旦前面的参数使用了关键字传参,后面的参数必须使用关键字传参,不能再使用位置传参,因此都是,位置传参在前面,关键字穿在在后面
2.5 format内部原理
v1="我叫{},今年{}".format("zqbj",18)
v2="我叫{},今年{age}".format("zqbj",age=19)
print(v1,v2)
注:内部使用的是*args
和**kwargs
进行的传参;
2.6 实参的动态参数
-
def func3(*args,**kwargs): print(args,kwargs) # 动态传参 func3(*[1,2,3]) func3(**{"a":1,"b":2})
-
补充上次的动态使用Sql
3、注意事项
-
参数和动态参数使用时,动态参数只能放在最后
def func(a,**kwargs) pass
-
默认参数和动态参数同时存在
- 默认参数要在**kwargs前面即可;(使用较少)
4、坑(后两个为面试题)
-
当默认参数是可变类型的时候函数内存会维护默认内存不清空,如果连续使用请注意避坑;