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

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

將 Python 引用重新分配給自身時(shí),它是取消分配并重新分配,還是什么都不做?

將 Python 引用重新分配給自身時(shí),它是取消分配并重新分配,還是什么都不做?

慕田峪9158850 2021-12-17 10:31:08
def new_val(x):    x['a'] = 5    return xb = {'a': 2}b = new_val(b) # b re-assigned to ret val由于字典是可變的,b 是一個(gè)指向字典的引用指針,我們將這個(gè)指針傳遞給函數(shù) new_val。對字典的引用沒有改變,但是字典對 2 的引用變成了 5。原始變量 b 現(xiàn)在應(yīng)該有 'a' 映射到 5。但是,我想知道對字典的引用(換句話說,變量 b 的指針)是否會改變。從技術(shù)上講,我們將引用變量 b 重新分配給恰好相同的引用。在低水平上,會發(fā)生什么?這是否像一個(gè)無操作,其中一些邏輯識別出引用是相同的,或者引用實(shí)際上被取消分配并重新分配?也許一個(gè)更簡單的例子是:b = {}b = b # At a low level, what does this line do?
查看完整描述

1 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

b = b是不是無操作。先前b變量持有的數(shù)據(jù)被重新分配給一個(gè)新變量,其名稱也是b。所以它什么都不做,但不會被忽略。


不要相信我的話。讓我們反匯編你的最后一個(gè)例子:


def f():

    b = {}

    b = b


import dis


print(dis.dis(f))


  2           0 BUILD_MAP                0

              3 STORE_FAST               0 (b)


  3           6 LOAD_FAST                0 (b)

              9 STORE_FAST               0 (b)

             12 LOAD_CONST               0 (None)

             15 RETURN_VALUE

正如你看到有2個(gè)操作LOAD_FAST并STORE_FAST在b該b = b行。他們沒有取得任何有用的成果,但他們被執(zhí)行了。


查看完整回答
反對 回復(fù) 2021-12-17
  • 1 回答
  • 0 關(guān)注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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