位置引數
power(x, n)函式有兩個引數:x和n,這兩個引數都是位置引數,呼叫函式時,傳入的兩個值按照位置順序依次賦給引數x和n。預設引數 =
預設引數必須指向不變物件!def enroll(name, gender,age=6,city='beijing'):
print('name:', name)
print('gender:', gender)
呼叫:enroll('bob', 'm', 7)、enroll('adam', 'm', city='tianjin')
可變引數:* >=0
可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple---類似list,不可變元組def calc(*numbers):sum = 0
for n in numbers:
sum = sum + n * n
return sum
呼叫時傳入乙個list或tuple
呼叫 calc(1,2,3)
關鍵字引數(**kw)----key--value(map)
關鍵字引數允許你傳入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:
命名關鍵字引數 *
如果要限制關鍵字引數的名字,就可以用命名關鍵字引數
例如,只接收city和job作為關鍵字引數。def person(name, age, *, city, job):
print(name, age, city, job)
如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了def person(name, age, *args, city, job):
print(name, age, args, city, job)
命名關鍵字引數必須傳入引數名,這和位置引數不同。
如果命名關鍵字引數city具有預設值,呼叫時,可不傳入city引數。
引數組合
在python中定義函式,可以用必選引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,
這5種引數都可以組合使用。但是請注意,引數定義的順序必須是
必選引數-->預設引數-->可變引數-->命名關鍵字引數-->關鍵字引數。
備註:
>>> args = (1, 2, 3, 4)
>>> kw =
>>> f1(*args, **kw)
#這句其實就是f1(args[1],args[2],args[3],args[4],d=99,x='#')的縮寫
a = 1 b = 2 c = 3 args = (4,) kw =
>>> args = (1, 2, 3)
>>> kw =
>>> f2(*args, **kw)
#這句其實就是f2(args[1],args[2],args[3],d=88,x='#')的縮寫
python函式之 預設值引數總結
1.預設值引數後的所有引數都必須是預設值引數,直到遇到任意引數列表def f1 a 2 b 3,c或 c 預設值引數後的引數必須都是預設值引數,直到遇到 即可變引數 print a,b,c f1 4,6 輸出 3 4 或3 4 2.預設值引數,傳遞新引數會覆蓋該函式本地符號表中的值,不傳遞則使用預設...
Python函式引數總結
作為乙個沒有系統學習過python,卻要與之日日相對看原始碼的人,真尼瑪痛苦啊。經常看到 kws之類的,心中狂虐 這啥?指標的指標?t t 昨天看 python核心程式設計 的時候,剛好看到了函式部分,於是順勢將目前接觸到的集中引數型別都總結一下吧 總的來說,除去普通的normal args,pyt...
python 引數傳遞總結
python中函式的引數通過賦值的方式來傳遞引用物件。下面總結通過總結常見的函式引數定義方式,來理解引數傳遞的流程。這種方式最常見了,列出有限個數的引數,並且彼此之間用逗號隔開。在呼叫函式的時候,按照順序以此對引數進行賦值,特備注意的是,引數的名字不重要,重要的是位置。而且,必須數量一致,一一對應。...