亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

每次調用myfunc()時value都是None,但是id(myfunc())的值為什么不同?

每次調用myfunc()時value都是None,但是id(myfunc())的值為什么不同?

qq_花開花謝_0 2023-04-25 14:10:40
下面示例:>>> def function(data=[]):...     data.append(1)...     return data... >>> function()[1]>>> function()[1, 1]>>> function()[1, 1, 1]>>> id(function())3076744140L>>> id(function())3076744140L說明python實際上是先把默認參數的值計算出來,以后每次調用都是用以前計算出的值. 這里每次function調用使用同一個data, 這里的data是可變對象, 因此data的值不斷append.那么下面的例子:>>> def myfunc(value=None):...     if(value is None):...             value=[]...     value.append(5)...     return value... >>> myfunc()[5]>>> myfunc()[5]>>> id(myfunc())3070938636L>>> id(myfunc())3070938284L>>> id(myfunc())3070938284LNone是一個常量, 是一個不可變對象, 每次調用myfunc()時value都是None,但是id(myfunc())的值為什么不同呢?
查看完整描述

2 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

默認參數只被計算一次。

上者是修改,下者是賦值,不一樣:一個是對一個對象操作,一個是更替對象


查看完整回答
反對 回復 2023-04-28
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

第一個例子中 data 是固定的,因此 id(data) 是固定的。

第二個例子中每次 value 都是一個新的 list,因此每次 id(value) 都不一樣。


查看完整回答
反對 回復 2023-04-28
  • 2 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號