第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么這個函數(shù)對于同一個變量但同一個地址有不同的值?

為什么這個函數(shù)對于同一個變量但同一個地址有不同的值?

胡子哥哥 2021-12-08 10:19:44
def func(t):    t = 5    print('inside function', t)    print('inside function address = ', id(hex(t)))x = 3func(x)print('outside function',x)print('outside function address = ', id(hex(x)))這打印inside function 5inside function address =  31255648outside function 3outside function address =  31255648我的理解是在沒有賦值的函數(shù)中引用的變量將使用其范圍之外的變量。但是如果函數(shù)有賦值,那么它會在內(nèi)存的新空間中創(chuàng)建一個新變量并在那里賦值。為什么函數(shù) id 找到的是參數(shù)的原始地址而不是新創(chuàng)建的變量的地址?
查看完整描述

2 回答

?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

您對變量作用域的理解是正確的。但這種行為與范圍界定無關(guān)。在你的分析中你錯過了一個重要的細節(jié):你沒有打電話id(t);你打電話id(hex(t))。

這是正在發(fā)生的事情,一步一步:

  1. hex(5)叫做。這將'0x5'在地址 31255648 處創(chuàng)建字符串。

  2. id(hex(5)) 返回 31255648。

  3. 不再需要該字符串并進行垃圾收集。

  4. hex(3)叫做。這將'0x3'在地址 31255648 處創(chuàng)建字符串。

  5. id(hex(3)) 返回 31255648。

換句話說,您有兩個對象(字符串),它們的生命周期沒有重疊,并且恰好在相同的內(nèi)存地址處創(chuàng)建,這就是它們最終具有相同 ID 的原因。


查看完整回答
反對 回復 2021-12-08
?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

hex(x)是一個字符串。id(hex(x))創(chuàng)建一個字符串,獲取其 id,然后立即丟棄該字符串。

ID 只需要在其各自對象的生命周期內(nèi)是唯一的。由于字符串不同時存在,它們可以具有相同的 id。


查看完整回答
反對 回復 2021-12-08
  • 2 回答
  • 0 關(guān)注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號