python不定長引數如何呼叫函式?

wyfem發表於2021-09-11


python不定長引數如何呼叫函式?


我們講了這麼多的引數,多多少少都會有一些限制的地方。小編在學習的時候,發現了一個新的引數很有意思,在長度、型別上沒有進行固定,跟它的名字非常相符,那就是不定長引數。那麼這類引數在呼叫函式上會有什麼不同嗎?帶著這個問題,我們一起來學習在python中使用不定長引數呼叫函式。

函式的不定長引數包含*args和**kwargs,完整例項如下:

def function_print(*args,**kwargs): # 傳遞不定長引數,即引數個數不固定
 print(args)
 print(kwargs)
 
function_print()

輸出結果:

()
{}

程式碼分析:由輸出結果可以看出來,第一個形參*args 是元組tuple型別,第二個形參**kwargs是字典dict型別。

對於任意函式,都可以透過func_name(*args, **kw)的形式來進行呼叫,其中 args 是一個已經獲得的列表或者元組,而 kw 是一個已經獲得的字典。列表傳入會按順序對必輸引數賦值,多餘的引數會當成可變引數傳入,而字典傳入會根據 key 來匹配所有引數。如:

def test1(a, b, c=0, *args, **kwargs):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kwargs)
 
def test2(a, b, c=0, *args, d, **kwargs):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'args=', args, 'kw =', kwargs)
 
# 定義一個元組和字典用作引數傳入
args = (1, 2, 3, 4)
kw = {'d': 99, 'x': '#'}
 
test1(*args, **kw)
# a = 1 b = 2 c = 3 args = (4,) kw = {'d': 99, 'x': '#'}
test2(*args, **kw)
a = 1 b = 2 c = 3 d = 99 args= (4,) kw = {'x': '#'}

注意函式傳參的三種形式:

1.普通傳參

2.預設引數,如果外部沒有為預設引數傳遞實參,形參等於預設值

3.注意不定長引數的拆包,普通實參打包為元組tuple型別,關鍵字引數打包為字典dict型別


以上就是不定長引數呼叫函式的方法了,相信小夥伴們都對這種長度、型別不限定的引數非常感興趣,學會的一起執行程式碼,看看是否跟小編的結果一致呢~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2894/viewspace-2831809/,如需轉載,請註明出處,否則將追究法律責任。

相關文章