位置参数,关键字参数,*python中函数的参数主要包括位置参数和关键字参数,使用和*参数可以实现不定数量的位置,变量关键字参数的个数,以及传入的强制关键字参数。位置参数在调用函数时,根据函数定义的参数位置传递参数。deffunc(a,b):print('a:%s,b:%s'%(a,b))>>>func(1,2)#参数1为第一个参数,传给a;Parameter2为第二个参数,传递给ba:1,b:2>>>func(2,1)a:2,b:1关键字参数用于函数调用,通过“key-value”形式来被指定。它可以使函数更清晰易用,同时也去掉了参数的顺序要求。在编程中,推荐使用关键字参数来传递参数。deffunc(a,b):print('a:%s,b:%s'%(a,b))>>>func(a=1,b=2)a:1,b:2>>>func(b=2,a=1)#key匹配参数而不是位置a:1,b:2不定数量的位置参数用*包裹0个或多个位置参数,多个位置参数打包传递一个元组到函数deffunc1(*t):print(t)foriint:print(i)>>>func1(1)(1,)1>>>func1()()>>>func1(1,2,3)(1,2,3)123另一种情况是函数有固定参数,传参时用*封装:deffunc(a,b):print('a:%s,b:%s'%(a,b))>>>params=(10,20)>>>func(*params)#会自动匹配第一个参数10和a;第二个Parameter20匹配b;a:10,b:20可变数量的关键字参数用**包裹,包裹0个或多个关键字参数,多个关键字参数打包为字典传入函数deffunc2(**a):print(a)对于a.items()中的k,v:print(k,v)>>>func2(m=1,n=2){'m':1,'n':2}m1n2>>>func2(a=1,b=2,c=3){'a':1,'b':2,'c':3}a1b2c3>>>func2(){}在另一种情况下,a字典也被打包传入,进入函数后会自动根据字典的k和v进行解析:deffunc(a,b):print('a:%s,b:%s'%(a,b))func(**{'a':1,'b':2})#相当于a=1,b=1传入。a:1,b:2建议在实际项目开发中使用强制关键字参数,不建议使用**封装作为可变参数的输入,这样会使代码不清晰;但是上面的情况使用2可以简化多参数函数的代码。强制关键字参数后跟*位置参数,只能跟关键字参数deffunc(a,*b,c):print(a,b,c)>>>func(1,2,3,4,c=10)1(2,3,4)10>>>func(1,2,3,4)#后面的c必须是关键字参数traceback(最近调用last):File"",line1,in
