day14 Python函数之可变长参数
函数参数
1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
2.实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
a传给了x。b传给了y。
3.位置参数和关键字(标准调用:实参与形参位置一一对应;关键字调用:位置无需固定)
#位置参数,必须一一对应,否则报错,缺一个或者多一个不行
def test1(x,y,z): print(x) print(y) print(z) test1(1,3,5) 结果: 1 3 5
#关键字参数,不需要一一对应,缺一个或者多一个不行 def test1(x,y,z): print(x) print(y) print(z) test1(y=1,z=3,x=5) 结果: 5 1 3
位置参数和关键字混搭
#位置参数必须在关键字参数左边 def test1(x,y,z): print(x) print(y) print(z) test1(1,3,z=5) #z=5换成y=5会报错,因为按照顺序,5会覆盖3,但是z值没有 结果: 1 3 5
4.默认参数
def handle(x,type="None"): print(x,type) handle("hello") handle("hi",type="how are you") handle("ll","ii") 结果: hello None hi how are you ll ii
5.参数组
**跟字典有关系 *跟列表有关系 **,*args在最后放着表示可扩展性!!!! * def test(x,*args): print(x) print(x,args) print(args) print(args[0]) print(*args[0]) test(1,["c","v","b"],5,6,7,8) 结果: 1 1 (['c', 'v', 'b'], 5, 6, 7, 8) (['c', 'v', 'b'], 5, 6, 7, 8) ['c', 'v', 'b'] c v b ** def test01(x,**kwargs): print(x) print(kwargs) test01(1,name="charon",age=10) 结果: 1 {'name': 'charon', 'age': 10} 结合:*args千万不能在后面,否则报错,位置参数必须在关键字参数前面 def test01(x,*args,**kwargs): print(x) print(args,args[1]) print(kwargs) test01(1,"vv",2,"bb",name="charon",age=10) 结果: 1 ('vv', 2, 'bb') 2 {'name': 'charon', 'age': 10}