1揣非、可變參數(shù)雾家,參數(shù)個(gè)數(shù)可變
在參數(shù)前面加上* 就代表可變參數(shù)
可變參數(shù)卓研,在函數(shù)內(nèi)部其實(shí)就是一個(gè)tuple
def fun(*num):
??????? sum = 0
??????? for n in num:
???????????? ? sum = sum + n
???????? return sum
# 由于定義函數(shù)的參數(shù)是可變,所以這里可以寫任意多個(gè)參數(shù)
print(fun(1,2,3,4))
結(jié)果是:1+2+3+4=10
# 如果有個(gè)list或者tuple蜗巧,想將里面的每一個(gè)元素當(dāng)做參數(shù)傳進(jìn)去掌眠,可以在list或者tuple前面加上*,這樣list或tuple中的元素就變成了可變參數(shù)傳進(jìn)去
nums = [1, 2, 3, 4, 5]
print(fun(*nums))? # *nums表示把nums這個(gè)list的所有元素作為可變參數(shù)傳進(jìn)去
結(jié)果是:1+2+3+4+5=15
二幕屹、關(guān)鍵字參數(shù)蓝丙。
關(guān)鍵字參數(shù)允許你傳入任意個(gè)含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict
?# 前兩個(gè)是位置參數(shù)望拖,**kw是關(guān)鍵字參數(shù)
def? person(name, age, **kw):
print('name=',name,'age=',age,'other',kw)
# 沒有傳關(guān)鍵字參數(shù)
person('lisa', 18)
結(jié)果是:name=lisa, age=18,other{}
# 一個(gè)關(guān)鍵字參數(shù) ,調(diào)用關(guān)鍵字參數(shù)渺尘,是鍵值對(duì)的形式
person('lisa', 18, city='beijing')
結(jié)果是:name=lisa, age=18,other{'city':'beijing'}
# 多個(gè)關(guān)鍵字參數(shù)
person('lisa', 18, city='beijing',job='teacher')
結(jié)果是:name=lisa, age=18,other{'city':'beijing', 'job':'teacher'}
# 將已有的dict當(dāng)做參數(shù)傳進(jìn)去
# **otherDic表示把otherDic這個(gè)dict的所有key-value用關(guān)鍵字參數(shù)傳入到函數(shù)的**kw參數(shù),kw將獲得一個(gè)dict说敏,注意kw獲得的dict是otherDic的一份拷貝鸥跟,對(duì)kw的改動(dòng)不會(huì)影響到函數(shù)外的otherDic。
otherDic = {'city':'beijing', 'sex':'man', 'job':'student'}
person('lisa', 18, **otherDic)
結(jié)果是:name=lisa, age=18,other{'city':'beijing','sex':'man', 'job':'teacher'}