python中的預設函式問題

2021-09-26 04:51:15 字數 716 閱讀 4587

看看下面**,猜猜列印的結果

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...