在定義函式的時候,如果函式的引數有預設值,有兩種型別的引數,一種是整數,字串這種不可變型別,另一種是列表這種可變型別,對於第一種情況沒有什麼特殊的地方,但是對於可變型別,有乙個微妙的小陷阱。
可變型別以及小陷阱:
#coding=utf-8
return
list1
[1][1, 2]
[1, 2, 6]
list2 = [6, 7]
[6, 7, 1]
[6, 7, 1,9]
原因:在建立上面的函式時,list1引數被設定為引用乙個新的列表,之後,在僅使用第乙個引數呼叫該函式(即第二個使用預設引數)時,預設的列表都將是函式本身建立時指定的那個列表,因此將不會再有新的列表得以建立。
我們所期待的是,在每次僅使用第乙個引數呼叫該函式時,都會建立乙個新的空列表,下面進行改動:
#coding=utf-8
ifnot
list1:
list1 =
return
list1
[1][2]
[6]list2 = [6, 7]
[6, 7, 1]
[6, 7, 1,9]
Python中定義函式時引數有預設值的小陷阱
在定義函式的時候,如果函式的引數有預設值,有兩種型別的引數,一種是整數,字串這種不可變型別,另一種是列表這種可變型別,對於第一種情況沒有什麼特殊的地方,但是對於可變型別,有乙個微妙的小陷阱。可變型別以及小陷阱 coding utf 8 return list1 1 1,2 1,2,6 list2 6...
Python中定義函式時引數有預設值的小陷阱
在定義函式的時候,如果函式的引數有預設值,有兩種型別的引數,一種是整數,字串這種不可變型別,另一種是列表這種可變型別,對於第一種情況沒有什麼特殊的地方,但是對於可變型別,有乙個微妙的小陷阱。可變型別以及小陷阱 return list1 list2 6,7 ps 遇到問題沒人解答?需要python學習...
python定義函式時的引數 呼叫函式時的傳參
一 定義函式 1 位置引數 直接定義引數 2 預設引數 或者關鍵字引數 引數名 預設值 3 位置引數必須在預設引數之前 二 呼叫函式 1 按位置傳,直接寫引數的值 2 按關鍵字傳,關鍵字 值 3 位置引數必須在關鍵字引數之前 4 關鍵字引數可在 args和 kwargs之前 注 呼叫時,無論定義的函...