python 函式引數

2021-09-20 15:23:55 字數 3200 閱讀 5794

python函式可以定義下面幾種引數:

python中函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個「別名」:

>>

> a =

abs# 變數a指向abs函式

>>

> a(-1

)# 所以也可以通過a呼叫abs函式

1

預設引數必須指向不可變物件!

顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個。有時預先不知道函式需要接受多少個實參,python允許函式從呼叫語句中收集任意數量的實參。

可變引數定義方式:在引數前面加了乙個*號。在函式內部,可變引數接收到的是乙個tuple,python直譯器會給帶星號的形參建立乙個空元組,並將收到的所有實參都裝到這個元組中。

例如定義乙個函式如下:

def

calc

(*numbers)

:sum=0

for num in numbers:

sum+= num

print

(sum

)calc(1,

2,3,

4)calc(

)

執行結果為:

10

0

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

>>

> nums =[1

,2,3

]>>

> calc(nums[0]

, nums[1]

, nums[2]

)6

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

>>

> nums =[1

,2,3

]>>

> calc(

*nums)

6

關鍵字實參事傳遞給函式的key-value 對。呼叫函式時,我們向python明確指出了各個實參對應的形參,不用考慮引數定義的位置。

可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而可變關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。請看示例:

def

person

(name, age,

**kw)

:print

('name:'

, name,

'age:'

, age,

'other:'

, kw)

呼叫函式:

>>

> person(

'michael',30

)name: michael age:

30 other:

>>

> person(

'bob',35

, city=

'beijing'

)name: bob age:

35 other:

>>

> person(

'adam',45

, gender=

'm', job=

'engineer'

)name: adam age:

45 other:

也可以先組裝出乙個dict,然後,把該dict轉換為關鍵字引數傳進去:

>>

> extra =

>>

> person(

'jack',24

, city=extra[

'city'

], job=extra[

'job'])

name: jack age:

24 other:

2.2中,對於可變引數,我們可以先組裝出乙個tuple或者list, 然後在變數前加乙個星號, 把list或tuple的元素變成可變引數傳進去。和可變引數類似,上面複雜的呼叫可以用簡化的寫法:

>>

> extra =

>>

> person(

'jack',24

,**extra)

name: jack age:

24 other:

**extra表示把extra這個dict的所有key-value用關鍵字引數傳入到函式的**kw引數,kw將獲得乙個dict,注意**kw獲得的dict是extra的乙份拷貝,對kw的改動不會影響到函式外的extra。**

python的函式具有非常靈活的引數形態,既可以實現簡單的呼叫,又可以傳入非常複雜的引數。

預設引數一定要用不可變物件,如果是可變物件,程式執行時會有邏輯錯誤!

要注意定義可變引數和關鍵字引數的語法:

*args是可變引數,args接收的是乙個tuple;

**kw是關鍵字引數,kw接收的是乙個dict。

以及呼叫函式時如何傳入可變引數和關鍵字引數的語法:

可變引數既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過*args傳入:func(*(1, 2, 3))

關鍵字引數既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過**kw傳入:func(**)

使用*args**kw是python的習慣寫法,當然也可以用其他引數名,但最好使用習慣用法。

python引數函式 Python函式引數總結

coding utf 8 整理一下python函式的各種引數型別 位置引數 呼叫函式時,傳入的兩個值按照位置順序依次賦給引數 def power x,n s 1 while n 0 n n 1 s s x return s print power 5,2 預設引數 簡化函式的呼叫 def power...

python 引數 Python函式 引數

python中將函式作為引數,區分將引數直接寫成函式名和函式名 的區別。def fun1 fun print print print fun 執行fun1 fun4 時,fun為函式fun3的返回值x print type fun type fun type fun fun 執行fun1 fun4 ...

函式傳引數 python 函式引數

1.位置引數 最熟悉的一種引數形式,優點 簡單。缺點 傳遞引數不夠靈活 2.預設引數 優點 提高了 的復用性 缺點 容易產生二義性 注意事項 一是必選引數在前,預設引數在後。二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。def p...