關鍵字引數可以傳入0或者多個引數名的引數,這些引數在函式定義中並沒有出現,這些引數在函式內部自動封裝整合乙個字典(dict),通常來講關鍵字引數是放在函式引數列表的最後,通過乙個demo**來看:
def write_msg(id, **kwargs):
msg =
for key, val in kwargs.items():
msg[key] = val
return msg
**kwargs在函式內部是乙個字典,我們可以對這個字典進行迭代,取出函式的鍵(key)和值(value),對上面的demo測試如下:
bruce_msg = write_msg(1, name='bruce', age=26, ***='male', city='guangzhou')
lily_msg = write_msg(2, name='lily', age=26, ***='female', city='zhongshan')
tom_msg = write_msg(2, name='tom', age=30, ***='male', city='shanghai', post='engineer')
print(bruce_msg)
print(lily_msg)
print(tom_msg)
none_msg = write_msg(3)
print(none_msg)
結果:
函式的可變引數所傳入的內容個數是可以變化的,可以是1個,2個到任意個。使用可變引數可以很好的解決引數靈活變化的問題,單有一點需要注意,可變引數在函式定義時出現在在特定引數和預設引數面前,因為可變引數會覆蓋掉這些引數,來看乙個demo:
def compute_type(type, *args):
val = 0
if type == 'add':
for arg in args:
val += arg
return val
elif type == 'multi':
val = 1
for arg in args:
val *= arg
return val
else:
print('not support this type compute!')
大行呼叫compute_type的時候,除了特定引數type,後面傳入的引數都會被識別為可變引數,可變引數args亦是乙個可迭代的物件,對demo測試如下:
add_num = compute_type('add', 1,2,3,4,5,6,7,8,9,10)
print('add:', add_num)
multi_num = compute_type('multi', 1,2,3,4,5,6,7,8,9)
print('multi:', multi_num)
結果:
add: 55
multi: 362880
python關鍵字和非關鍵字引數(可變長引數)
可變長引數存在的意義是 每次呼叫乙個函式處理不同量的引數輸入。即,引數在呼叫之前輸入的引數數量是未知的,或者多次呼叫該函式,每次的引數輸入的量是不一致的 可變長引數分為非關鍵字和關鍵字型別,分別對應元組和字典,如下定義乙個類,功能是列印出輸入的函式 class test def keyword se...
python學習筆記4 可變引數和關鍵字引數
剛學用python的時候,特別是看一些庫的原始碼時,經常會看到func args,kwargs 這樣的函式定義,這個 和 讓人有點費解。其實只要把函式引數定義搞清楚了,就不難理解了。args代表args是乙個元組,kwargs代表了kwargs是乙個元組元素是字典型別的元組。先說說函式定義,我們都知...
python中的可變引數和關鍵字引數
可變引數 在python函式中,可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個 2個到任意個,還可以是0個。定義可變引數和定義普通引數相比,僅僅在引數前面加了乙個 號,例如def cul nums 關鍵字引數 可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自...