1.python的函式定義非常簡單,但靈活度卻非常大。除了正常定義的必選引數外,還可以使用預設引數、可變引數和關鍵字引數,使得函式定義出來的介面,不但能處理複雜的引數,還可以簡化呼叫者的**
1).位置引數,呼叫時必須按位置順序給傳入值,否則會報錯
>>> def pow(x,n):
y=1while n>0:
y = y*x
n = n-1
return y
>>> pow(2,3)
8
2)預設引數,傳引數時預設引數可以不用傳,而函式會使用預設值,且不會報錯
>>> def fow(x,n=2):
y=1while n>0:
y = y*x
n = n-1
return y
>>> fow(2,3)
8>>> fow(2)
4
3.可變引數,在python函式中,還可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個,或者使用*list或*tuple
>>> def calc(*nums):
sun = 0
for i in nums:
sun = sun + i
return sun
>>> calc(1)
1>>> calc(1,2)3]
>>> calc(2,3,4,5,6,7,8,9)
44
>>> mm = (1,2,3,4,5,6,7,8,9)
>>> calc(*mm)45
4.關鍵字引數,關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict
>>> def person(name,age,**other):
print('name:',name,'age',age,'other',other)
>>> person('mj',50)
name: mj age 50 other {}
>>> person('mk',30,city='beijing')
name: mk age 30 other
>>> person('md',90,***='man',city='xian')
name: md age 90 other
5.命名關鍵字引數,對於關鍵字引數,函式的呼叫者可以傳入任意不受限制的關鍵字引數。至於到底傳入了哪些,就需要在函式內部通過果要限制關鍵字引數的名字,就可以用命名關鍵字引數,例如,只接收city
和job
作為關鍵字引數。這種方式定義的函式如下
def person(name, age, *, city, job):
print(name, age, city, job)
>>> person('jack', 24, city='beijing', job='engineer') jack 24 beijing engineer
6.小結
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...