看看下面**,猜猜列印的結果
def extendlist(val, lis=):
return lis
list1 = extendlist(10)
list2 = extendlist(123, )
list3 = extendlist('a')
print(list1)
print(list2)
print(list3)
學過c++的我很快得出了如下答案
[10]但結果卻是這樣的[123]
[『a』]
[10, 『a』][123]
[10, 『a』]
原函式等價於
l=def extendlist(val, lis=l):
return lis
執行list1時, 使用預設引數,lis與l同位址,均為空,執行後lis與l均為[10]
執行list2時, 未使用預設引數,執行lis= 且直接改變了lis的位址,但l位址與值未變為[10]
執行list3時, 使用預設引數,lis=l,lis的位址再次發生改變,又指回了原來l的位址,故結果為[10,『a』]
若還不很明白可以分別列印這三個時刻的list和l的位址
python 函式預設引數順序問題
a,須以正確的順序傳入函式 b,呼叫時的數量必須和宣告時的一樣 def exa x returnx b作為引數進入函式體內 b 1print exa b 1print exa 錯誤 typeerror exa takes exactly 1 argument 0 given def exa x 1 ...
C 中 虛函式中的預設引數問題
原文 nwplei的部落格 當通過指標呼叫乙個物件的方法時,如果該方法是虛函式,則實際呼叫的是該例項的方法。當預設引數和虛函式一起出現的時候到底用哪個預設值呢?虛函式是動態繫結的,但是為了執行效率,預設引數是靜態繫結的。也就是 指標是哪種型別,就呼叫該型別對應的類中,該函式定義時的預設值。inclu...
C 中 虛函式中的預設引數問題
當通過指標呼叫乙個物件的方法時,如果該方法是虛函式,則實際呼叫的是該例項的方法。當預設引數和虛函式一起出現的時候到底用哪個預設值呢?虛函式是動態繫結的,但是為了執行效率,預設引數是靜態繫結的。也就是 指標是哪種型別,就呼叫該型別對應的類中,該函式定義時的預設值。include using names...