python不定長引數詳解

2021-10-05 17:59:44 字數 3155 閱讀 8394

如果想要乙個函式能不固定接收任意多個引數,可以使用不定長引數。

python自定義函式中有兩種不定長引數,第一種是****,在傳入額外的引數時可以不用指明引數名,直接傳入引數值即可。第二種是*****,這種型別返回的是字典,傳入時需要指定引數名。

加了乙個星號 * 不定長引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。加了兩個星號 ** 的引數會以字典的形式匯入,存放已命名的變數引數。

例如**

#coding=utf-8

#第乙個是元組形式,第二個是字典形式

defsun

(*a,

**b)

:print

(a)print

(b)sun(1,

55258

, x=

25412

, y=

5123512

)

執行結果

不定長引數簡單示例,第乙個是普通引數,第二個是不定長引數,我們可依次列印輸出,不定長引數為元組的形式,如b代表的是(55258,25412,5123512),而a作為普通引數,只能代表第乙個1。

**

#coding=utf-8

#不定長引數簡單示例,第乙個是普通引數,第二個是不定長引數

defsun

(a,*b)

:print

(a)print

(b)sun(1,

55258

,25412

,5123512

)

執行結果

在a, *b, **c同時出現的時候,如下:

**

#coding=utf-8

#使用不定長引數傳固定值,注意,b、c可省略,a不可省略

deffuzhi

(a,*b,

**c)

:print

(a)print

(b)print

(c)fuzhi(

853521

,65134

,635263

,45563

,365

, x=

99, y=

999)

執行結果

不定長引數b、c可省略,而普通引數a不可省略,假如我們省略a

**

#coding=utf-8

#使用不定長引數傳固定值,注意,b、c可省略,a不可省略

deffuzhi

(a,*b,

**c)

:print

(a)print

(b)print

(c)fuzhi(

)

執行結果

則會出現以上報錯情況

當我們用不定長引數來累加時:

**

#coding=utf-8

#用不定長引數實行累加

print(1

,2,3

,4,5

)def

sum(

*nums)

:"""

求多個數之和

:param list_one: 接收數字的不定長引數,會把引數組裝成乙個(tuple)元祖,賦值給不定長引數

:return: 返回所有數字之和

"""result =

0for num in nums:

ifisinstance

( num,

(int

,float))

: result = result + num

return result

sum(

)print

(sum(1

,2,3

))

執行結果

當我們將普通引數寫在不定長引數寫在後面時

**

#coding=utf-8

defjaychou

(a,*b, c)

:print

(a)print

(b)print

(c)jaychou(1,

555,

5768

,55451

)

執行結果會出現如下報錯,因此,位置不能隨意更改

如果在函式呼叫時沒有指定引數,它就是乙個空元組。我們也可以不向函式傳遞未命名的變數

#coding=utf-8

#如果在函式呼叫時沒有指定引數,它就是乙個空元組。我們也可以不向函式傳遞未命名的變數。

defvoid_tuple

(a,*tuplela)

:print

(a)for b in tuplela:

print

(b)return

print(1

)print(2

,3,4,5)

執行結果

Python不定長引數

記錄了python函式的不定長引數,用 來接收不定長的資料。在定義函式時,可以在形參前邊加上乙個 這樣這個形參將會獲取到所有的實參,它將會將所有的實參儲存到乙個元組中 a會接受所有的位置實參,並且會將這些實參統一儲存到乙個元組中 裝包 fn3函式的使用 形參可以接收其他的關鍵字引數,它會將這些引數統...

不定長引數 python

如果向乙個函式傳遞的引數的數量每次都不同,想要讓函式去做每次相加或者其他的事的時候,可以用 變數名 傳遞不定長引數,傳進去以後的變數會變成乙個元組def sum a result 0print type a for i in a result i return result result sum 1...

Python基礎 不定長引數

python自定義函式中有兩中不定長引數,第一種是 name,第二種是 name。加了星號 的引數會以元組 tuple 的形式匯入,存放所有未命名的變數引數。加了兩個星號 的引數會以字典的形式匯入。第一種形式的不定長引數,在傳入額外的引數時可以不用指明引數名,直接傳入引數值即可,第二種因為返回的是字...