[python]函数默认参数顺序问题
python 函數(shù)參數(shù)定義有四類:
1、必選參數(shù):調(diào)用函數(shù)時候必須賦值的參數(shù)。
a,須以正確的順序傳入函數(shù)
b,調(diào)用時的數(shù)量必須和聲明時的一樣
2,默認參數(shù):初始已經(jīng)有值,在調(diào)用時未更改使用默認值
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' def exa(x=1)return xprint exa() # 1 print exa(2) # 23,可變參數(shù):不確定參數(shù)個數(shù),會分配給帶“*”參數(shù)
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' def exa(*x)return xprint exa(1,2,3,4,5,6,6) # (1,2,3,4,5,6,6)4,關(guān)鍵字參數(shù):使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值。調(diào)用函數(shù)時帶關(guān)鍵字后,順序不影響。
def exa(x,y,z):return x,y,zprint exa(y=2,x=3,z=2) #(3, 2, 2)Tips:可變元組參數(shù)和可變字典參數(shù)
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' *x #可變元組參數(shù),參數(shù)格式化存儲在一個元組中,長度沒有限制。 #python2必須位于普通參數(shù)和默認參數(shù)之后。 #python3可以位于默認參數(shù)之前def exa(*x):return x print exa('ai', 'ni', 'ya') #('ai', 'ni', 'ya')**x #可變字典參數(shù) #必須位于參數(shù)列表的最后面。 def exa(**x):return x print exa(ai="愛",ni="你") #{'ai': '愛', 'ni': '你'}函數(shù)參數(shù)順序
args與必選參數(shù)和默認參數(shù)混用
1、python2、python3 三者順序是:位置參數(shù)、默認參數(shù)、*args
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' 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)2、python3 三者順序是:位置參數(shù)、*args、默認參數(shù)
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始終為13、python2、python3 **kwargs與位置參數(shù)、*args、默認參數(shù)混用
**kwargs:可變字典長度(表示的就是形參中按照關(guān)鍵字傳值把多余的傳值以字典的方式呈現(xiàn))
位置參數(shù)、*args、**kwargs三者的順序必須是位置參數(shù)、*args、**kwargs
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' 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={'y':5,'a':6,'b':7}python2參數(shù)順序:必選參數(shù)、默認參數(shù)、可變參數(shù),關(guān)鍵字參數(shù)。
python2中,默認參數(shù)必須在可變參數(shù)之前
Python3參數(shù)順序:必選參數(shù),默認參數(shù),*args,**kwargs
python3中,*args也可以在默認參數(shù)前,誰在前誰優(yōu)先拿到值
python2和python3相同的是:
1、必選參數(shù)必選在默認參數(shù)之前
2、關(guān)鍵字參數(shù)在最后
總結(jié)
以上是生活随笔為你收集整理的[python]函数默认参数顺序问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python flask 如何修改默认端
- 下一篇: python3字符串的常见操作