a,須以正確的順序傳入函式
b,呼叫時的數量必須和宣告時的一樣
defexa(x):
returnx
#b作為引數進入函式體內
b=1print exa(b) #
1print
exa()
#錯誤 typeerror: exa() takes exactly 1 argument (0 given)
def exa(x=1)returnx
print exa() #
1print exa(2) #
2
def exa(*x)returnx
print exa(1,2,3,4,5,6,6)
#(1,2,3,4,5,6,6)
defexa(x,y,z):
return
x,y,z
print exa(y=2,x=3,z=2) #
(3, 2, 2)
*x#可變元組引數,引數格式化儲存在乙個元組中,長度沒有限制。
#python2必須位於普通引數和預設引數之後。
#python3可以位於預設引數之前
def exa(*x):
return
xprint exa('
ai', '
ni', 'ya'
)#('ai', 'ni', 'ya')
**x#
可變字典引數
#必須位於引數列表的最後面。
def exa(**x):
return
xprint exa(ai="
愛",ni="你"
)#
def foo(x,y=1,*args):pass
foo (1,2,3,4,5) // 其中的x為1,y=1的值被2替換,3,4,5都給args,即args=(3,4,5)
def foo(x,*args,y=1):pass
foo (1,2,3,4,5) // 其中的x為1,2,3,4,5都給args,即args=(2,3,4,5),y始終為1
**kwargs:可變字典長度(表示的就是形參中按照關鍵字傳值把多餘的傳值以字典的方式呈現)
位置引數、*args、**kwargs三者的順序必須是位置引數、*args、**kwargs
def foo(x,*args,**kwargs):pass
foo (1,2,3,4,y=5,a=6,b=7) // 其中的x為1,2,3,4都給args,即args=(2,3,4),y=5,a=6,b=7以字典形式傳給kwargs,即kwargs=
python2引數順序:必選引數、預設引數、可變引數,關鍵字引數。
python2中,預設引數必須在可變引數之前
python3引數順序:必選引數,預設引數,*args,**kwargs
python3中,*args也可以在預設引數前,誰在前誰優先拿到值
python2和python3相同的是:
1、必選引數必選在預設引數之前
2、關鍵字引數在最後
參考:
Python 函式的引數 預設引數
預設引數很有用,但使用不當,也會掉坑里。預設引數有個最大的坑,演示如下 先定義乙個函式,傳入乙個list,新增乙個end再返回 def add end l return l當你正常呼叫時,結果似乎不錯 add end 1,2,3 1,2,3,end add end x y z x y z end 當...
python 預設引數 Python預設引數有坑?
最近有小夥伴在面試中遇到了 關於函式預設引數的坑 的題目,少數夥伴對此問題理得不是太清楚,今天匯智妹請到匯智動力高階教師鄧老師為大家詳細講解一下,幫助不太清楚的小夥伴清晰的梳理一遍。鄧老師本次主要從以下三點來講解 什麼是預設引數?函式預設引數的坑是什麼?函式預設引數為什麼會有坑?一 什麼是預設引數 ...
Python函式預設引數值
python的函式機制提供了可選引數的功能,可選引數需要放在引數列表的後幾個引數。當呼叫這些函式時,如果不想設定這些引數,就可以不用設定而直接使用函式定義的時候設定的引數預設值。同樣的,呼叫函式的時候也可以重新設定引數,這將覆蓋預設設定的引數。def func x,y 2 print x y fun...