python 函式預設引數順序問題

2022-02-19 12:13:14 字數 1696 閱讀 7747

a,須以正確的順序傳入函式

b,呼叫時的數量必須和宣告時的一樣

def

exa(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)

def

exa(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...