可變參數(shù)在使用上確實方便,函數(shù)會把可變參數(shù)當(dāng)作tuple去處理,tuple在使用上有一定的局限性,比如有時候想找到特定位置的參數(shù),只能通過下標的方式去尋找,如果順序發(fā)生變化得時候,下標就會失效,函數(shù)邏輯就得重新修改實現(xiàn)。
Python函數(shù)提供可變關(guān)鍵字參數(shù),對于可變關(guān)鍵字參數(shù),可以通過關(guān)鍵字的名字key找到對應(yīng)的參數(shù)值,想想這和我們之前學(xué)習(xí)過的什么類似?是的沒錯,dict,Python會把可變關(guān)鍵字參數(shù)當(dāng)作dict去處理;對于可變關(guān)鍵字參數(shù),一般使用**kwargs來表示。
例如,想要打印一個同學(xué)的信息,可以這樣處理:
def info(**kwargs): print('name: {}, gender: {}, age: {}'.format(kwargs.get('name'), kwargs.get('gender'), kwargs.get('age'))) info(name = 'Alice', gender = 'girl', age = 16)
對于一個擁有必需參數(shù),默認參數(shù),可變參數(shù),可變關(guān)鍵字參數(shù)的函數(shù),定義順序是這樣的:
def func(param1, param2, param3 = None, *args, **kwargs): print(param1) print(param2) print(param3) print(args) print(kwargs) func(100, 200, 300, 400, 500, name = 'Alice', score = 100) # ==> 100 # ==> 200 # ==> 300 # ==> (400, 500) # ==> {'name': 'Alice', 'score': 100}
當(dāng)然,這么多類型的參數(shù),很容易導(dǎo)致出錯,在實際使用上,不建議定義這么多的參數(shù)。
編寫一個函數(shù),它接受關(guān)鍵字參數(shù)names,gender,age三個list,分別包含同學(xué)的名字、性別和年齡,請分別把每個同學(xué)的名字、性別和年齡打印出來。
參考答案:
def info(**kwargs): names = kwargs['names'] gender_list = kwargs['gender'] age_list = kwargs['age'] index = 0 for name in names: gender = gender_list[index] age = age_list[index] print('name: {}, gender: {}, age: {}'.format(name, gender, age)) index += 1 info(names = ['Alice', 'Bob', 'Candy'], gender = ['girl', 'boy', 'girl'], age = [16, 17, 15])
請驗證,完成請求
由于請求次數(shù)過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報