python default arg 和 *args 不能同時用

python 函數 定義過程中參數的設置有一個問題

def  func1(  a, b, c=1, d=1, *args): ###默認參數必須在*args前, 但調用函數過程卻會有問題(因爲調用函數時輸入的參數必須是keyword arg 放後面)
	print a,b,c,args         # 但是 這就導致如果有變長的args輸入了,默認參數要麼被變長args覆蓋,要麼調用時再次輸入默認值, 這就導致默認參數默認值沒作用!



解決的辦法可以是   使用**kwargs

def func1(a,b,*args, **kwargs):
	c= kwargs.pop('c', 1)
	d= kwargs.pop('d', 1)  ### 取出kwargs中的 ‘d' ,如果沒有則取默認值 1





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章