#!/usr/local/bin/python3 # -*- coding:utf-8 -*- ''' #----------函数位置参数和关键字参数---------- def test(x,y): #此处的 x,y为形参 print(x) print(y) test(1,2) #位置参数调用-此处的 1,2为实参,且与形参一一对应 test(y=2,x=1) #关键字调用,与形参位置无关 #test(x=1,2) #此处会报错:因为在位置参数调用和关键字调用混合使用的情况下,会优先进行位置参数调用 #因此位置参数必须放在关键字的前面 #----------函数默认参数---------- def test(x,y=2): #何为默认参数? print(x) #指在定义形参时,给形参提前赋的值 print(y) test(1) #此时若只传递一个实参,那么另外一个实参则由函数默认参数所指定 test(1,y=3) #也可修改默认参数,即传递实参时指定默认参数即可,与test(1,3)等价 #默认参数特点:调用函数时,默认参数可有可无(非必须传递) #----------参数组----------#即 非固定参数 #1-实参个数不固定 #注:*args:接收N个位置参数转换为元组的形式 def test(*args): #对于实参个数不固定的情况,可以定义一个'*'开头的形参,'*'是功能代号 print(args) #这个形参会将所有的实参放入一个tuple test(1,2,3,4,5) test(*[1,2,3,4,5]) #传入列表参数,相当于*args=*[1,2,3,4,5] --> args=tuple([1,2,3,4,5]) #1-与位置参数结合(*args) def test2(x,*args): print(x) print(args) test2(1,2,3,4,5,6,7) #将 1 赋值给 x,(2,3,4,5,6,7)赋值给args #2-接收字典作为参数 def test3(**kwargs): #注:**kwargs:将N个关键字参数转换为字典的方式 print(kwargs) test3(name="zhangyu",age=18) #将关键字名称作为key,参数值作为value test3(**{"name":"zhangyu","age":18}) #可以传入一个字典作为参数 #3-与位置参数结合(**kwargs) def test4(name,**kwargs): print(name) print(kwargs) test4("zhangyu",age='18',sex='M') #4-与默认参数结合 def test5(name,age=18,**kwargs): print(name) print(age) print(kwargs) test5("mahongyan",sex='M',hobby='game') test5("zhangguobin",sex='M',hobby='None',age='40') #5-混合使用 def test6(name,age=18,*args,**kwargs): print(name) print(age) print(args) print(kwargs) test6("zhangyu",age=34,sex='M',hobby='game') #注:args只能接收位置参数,因此此时args为空 '''