Python函式中的可變引數

2022-05-18 08:16:58 字數 1435 閱讀 7250

在python函式中,還可以定義可變引數。

如:給定一組數字a,b,c……,請計算a2 + b2 + c2 + ……。

要定義出這個函式,我們必須確定輸入的引數。由於引數個數不確定,我們首先想到可以把a,b,c……作為乙個list或tuple傳進來,這樣,函式可以定義如下:

def

calc(numbers):

sum =0

for n in

numbers:

sum = sum + n *n

return sum

但是呼叫的時候,需要先組裝出乙個list或tuple:

>>> calc([1, 2, 3

])14

>>> calc((1, 3, 5, 7

))84

如果利用可變引數,呼叫函式的方式可以簡化成這樣:

>>> calc(1, 2, 3)14

>>> calc(1, 3, 5, 7

)84

所以,我們把函式的引數改為可變引數:

def calc(*numbers):

sum =0

for n in

numbers:

sum = sum + n *n

return sum

定義可變引數和定義list或tuple引數相比,僅僅在引數前面加了乙個*號。在函式內部,引數numbers接收到的是乙個tuple,因此,函式**完全不變。但是,呼叫該函式時,可以傳入任意個引數,包括0個引數:

>>> calc(1, 2)5

>>>calc()

0

如果已經有乙個list或者tuple,要呼叫乙個可變引數怎麼辦?可以這樣做:

>>> nums = [1, 2, 3

]>>> calc(nums[0], nums[1], nums[2

])14

這種寫法當然是可行的,問題是太繁瑣,所以python允許你在list或tuple前面加乙個*號,把list或tuple的元素變成可變引數傳進去:

>>> nums = [1, 2, 3

]>>> calc(*nums)

14

python中可以在tuple、list、dict前加*號,作用是將變數解開成若干個獨立的引數,傳入函式,還有類似的有兩個星號,是將字典解開成獨立的元素作為形參。

def

add(a, b):

return a+b

data = [4,3]

print add(*data)

#equals to print add(4, 3)

data =

print add(**data)

#equals to print add(4, 3)

Python 函式 可變引數

有些時候我們可能遇到引數的個數並不固定的情況,比如1 2 3 n 函式定義如下 def calc numbers sum 0 for n in numbers sum sum n n return sum上面這種情況只能傳乙個引數,而且引數一般是list或tuple,呼叫方式 calc 1,3,5 ...

Python函式的可變引數

剛學用python的時候,特別是看一些庫的原始碼時,經常會看到func args,kwargs 這樣的函式定義,這個 和 讓人有點費解。其實只要把函式引數定義搞清楚了,就不難理解了。先說說函式定義,我們都知道,下面的 定義了乙個函式funca def funca pass 顯然,函式funca沒有引...

Python函式 函式的可變引數

在python函式中,還可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個 2個到任意個,還可以是0個。我們以數學題為例子,給定一組數字a,b,c 請計算a 2 b 2 c 2 我們把函式的引數改為可變引數 def calc numbers sum 0 for n in nu...