python關鍵字引數與可變引數

2021-09-29 15:51:47 字數 1570 閱讀 9918

關鍵字引數可以傳入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個或任意個引數,這些可變引數在函式呼叫時自...