前言
該文檔旨在厘清函數的五種參數的定義、用法及注意點。
概述
1)必選參數;2)默認參數;3)可變參數;4)命名關鍵字參數;5)關鍵字參數:
參數定義的順序:1)→ 2)→ 3)→ 4)→ 5)
各參數說明
1)必選參數
顧名思義,是指在調用函數的時候,必須給這個參數指定一個符合該類型的值
栗子1:計算x的n次方

#計算x的n次方 def powder(x,n): s = 1 while n > 0: n = n - 1 s = s * x return s powder(2,3)#調用該函數
這里的powder(x,n)中的x,n就為必選參數,必須得傳入,否則會報錯
2)默認參數
是指在定義函數的時候,賦予該參數一個默認值,如果調用函數的時候沒有傳入該參數,就使用該參數的默認值
栗子2:計算x的3次方

#計算x的3次方 def powder(x,n=3): s = 1 while n > 0: n = n - 1 s = s * x return s powder(2)
在調用這個函數的時候,默認n=3,如果要算x的3次方,只需要傳入x的值即可
注意點:
1)必選參數在前,默認參數在后,否則解釋器會報錯;猜測原因可能為:如果設置默認參數在前的規則,會因為連等的原因導致歧義;
2)當函數有多個參數時,把變化大的參數放前面,變化小的參數放后面,變化小的參數就可以作為默認參數: 這句話暫時還不理解,mark一下;
3)不按順序提供默認參數的時候,需要寫上參數名:city = 'Beijing'
4)默認參數的坑:如果把默認參數定義成一個空的list,那么每次調用該函數,如果改變了[]的內容,則下次調用時,默認參數的內容就變了,不再是函數定義時的[]了,
因此默認參數必須指向不變對象;
栗子3:默認參數的坑

#默認參數的坑 def add_end(L=[]): L.append('end') return L add_end() #python函數在定義時,默認參數L的值就被計算出來了,即[] #因為默認參數L也是一個變量,它指向對象[] #每次調用該函數,如果改變了L的內容,則下次調用時,默認參數的內容就變了,不再是函數定義時的[]了
栗子4:修改默認參數的坑

#修改上面默認參數的坑 def add_end(L=None): if L is None: L=[] L.append('end') return L add_end() #不變對象一旦創建,對象內部的數據就不能修改
。。。。
占個坑 還沒寫完 等一下再補上。。