1.位置引數:從左至右進行匹配
2.關鍵字引數:通過引數名進行匹配
3.預設引數:為沒有傳入值的引數定義引數值
4.可變引數(動態傳參):收集任意多基於位置或關鍵字的引數
引數出現順序
在函式中,引數出現順序為:位置引數、關鍵字引數、預設引數(函式定義時)、任意長度的位置引數、任意長度的關鍵字引數
位置引數和關鍵字引數
def f(id,name,age):
print(id,name,age)
f(1901001,'able',21)
# 1901001 able 21
f(id =1901001,'able',21)
#報錯f(1901001,'able',age =21)
# 1901001 able 21
# 位置引數 > 關鍵字引數
關鍵字引數和預設引數def f(name,age,gender = 'man'):
print(name,age,gender)
f('able',21)
# able 21 man
def f(name,gender = 'man',age)
print(name,age,gender)
#導致預設引數無法使用,還會增加關鍵字引數的使用
# 位置引數 >關鍵字引數 > 預設引數
重要警告: 預設值只會建立一次。這條規則在預設值為可變物件(列表、字典以及大多數類例項)時很重要
def func(a,l = ):
print(a,l)
func(1) #第一使用預設引數
func(2,l = [2])
func(3) #第二次使用預設引數
#結果:
1 [1]
2 [2, 2]
3 [1, 3]
任意引數
1.任意數量的位置引數
def func(*arges):
print(arges)
func(1,2,3)
#結果(1, 2, 3)
#python將所有位置相關的引數收集到乙個新的元組中,並將這個元組賦值給變數arges。
#在函式定義時,如果將位置引數放在*arges後面,在函式呼叫時,都會當作是*arges的形參,從而引發錯誤。
2.任意數量的關鍵字引數
def func(**kwarges):
print(kwarges)
func(a = 1,b = 2)
#結果# **它只對關鍵字引數有效,將這些關鍵字引數傳遞給乙個新的字典
#在函式定義時,如果將關鍵字引數或缺省引數放在**kwarges後面,在函式呼叫時,都會當作是**kwarges的形參,從而引發錯誤。
引數解包
在函式呼叫時,同樣能夠使用*和**語法
def func(a,b,c):
print(a,b,c)
l = [7,8,9]
func(*l)
# 7 8 9
#在函式呼叫時,*會對引數集合進行解包。
def func(a,b,c):
print(a,b,c)
d =
# 1 2 3
#在函式呼叫時,**會以key:value對的形式解包乙個字典,使其成為獨立的關鍵字引數。
查詢乙個序列中與其它n(n>1)個序列中的相同元素(每個序列中都至少有乙個)
def union(*arges):
res =
for i in arges[0]:
for other in arges[1:]:
if i not in other:
break
else:
return res
keyword - only引數
def kwo(a,*b,c):
print(a,b,c)
#c必須按關鍵字傳遞
函式作為引數
例如內建函式map(function,iterable)
python函式引數(2)
呼叫函式時,預設引數的值如果沒有傳入,則取預設值。下例會列印預設的age,如果age沒有被傳入 def printinfo name,age 35 列印任何傳入的字串 print name s name print age d age 呼叫printinfo函式 printinfo name mik...
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 函式引數
1.位置引數 最熟悉的一種引數形式,優點 簡單。缺點 傳遞引數不夠靈活 2.預設引數 優點 提高了 的復用性 缺點 容易產生二義性 注意事項 一是必選引數在前,預設引數在後。二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。def p...