標籤:rgs code 關鍵字 描述 position turn 可見 返回 傳回值
python函數的定義方式:
def 函數名(參數): ‘‘‘函數描述‘‘‘ 函數體 ... return 傳回值
樣本:
def test(x,y): ‘‘‘求x的y次冪‘‘‘ return x**yres=test(2,3) #傳入位置參數print(res)res=test(y=3,x=2) #傳入關鍵字參數print(res)#------------------------------------88
函數參數的相關:
位置參數特點:必須一一對應,實參數量等於形參數量。
關鍵字參數特點:無須一一對應,實參數量等於形參數量。
位置參數必須在關鍵字參數左邊:
def test(x,y,z): ‘‘‘求xyz之和‘‘‘ return x+y+zres=test(2,3,z=5) #8res=test(2,3,y=5) #關鍵字參數傳入y前已有位置參數3傳入,故報錯res=test(x=2,3,5) #關鍵字參數在位置參數前傳入,報錯
可變參數:*args, **kwargs
*args樣本:
def test(*args): ‘‘‘不定數求和‘‘‘ s=0 for i in args: #args是元組形式 s+=i return sres=test(1,2,3)print(res)#-------------------------------6
*號的作用:傳入的位置參數以元組形式(1,2,3)傳給args,*args將args元組中的值拆分為位置參數傳給函數:
def test(x,y,z): ‘‘‘求xyz之和‘‘‘ return x+y+zl=(1,2,3)res = test(*l)print(res)#6l=(1,2,3,4)test(*l)print(res)#TypeError: test() takes 3 positional arguments but 4 were given
#位置參數有3個,l將其中的元素拆分開來後有4個參數,故報錯
*args與位置參數混合使用:
def test(x,y,*args): #位置參數必須在*args前,否則報錯 print(‘x:%s y:%s args:%s‘ %(x,y,args))test(1,2,3,4,5)#‘x:1 y:2 args:(3, 4, 5)‘#傳入的實參中,依次傳入位置參數和*args
**kwargs樣本:
def test(**kwargs): print(kwargs) print(‘x:%d y:%d‘ %(kwargs[‘x‘],kwargs[‘y‘]))test(x=1, y=3)#--------------------------{‘x‘: 1, ‘y‘: 3} #可見函數將關鍵字參數打包成字典傳給了kwargsx:1 y:3
**號的作用:傳入的關鍵字參數以字典的形式賦給kwargs,**kwargs將字典拆分成關鍵字參數的形式傳給函數。
位置參數,*args,**kwargs的混合使用:
def test(x, y, *args, **kwargs): print(‘x:%s y:%s args:%s kwargs:%s‘ %(x, y, args, kwargs))test(1,2,3,4,5,g=8,m=6)#x:1 y:2 args:(3, 4, 5) kwargs:{‘g‘: 8, ‘m‘: 6}#注意事項,傳參過程中,關鍵字參數不可重複傳給已經存在的位置參數。否則報錯,即形參不可重複傳值。
#x, *args, **kwargs順序不可置換
Python之函數