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

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

關(guān)于不可變字符串的更改id

關(guān)于不可變字符串的更改id

犯罪嫌疑人X 2019-06-29 10:25:16
關(guān)于不可變字符串的更改id關(guān)于id類(lèi)型對(duì)象str(在python 2.7中)令我困惑。這個(gè)str類(lèi)型是不可變的,所以我希望一旦它被創(chuàng)建,它將始終具有相同的類(lèi)型。id..我相信我不是很好的表達(dá)自己,所以我會(huì)張貼一個(gè)輸入和輸出序列的例子。>>> id('so')140614155123888>>> id('so')140614155123848>>> id('so')140614155123808所以在這段時(shí)間里,它一直在變化。但是,在變量指向該字符串后,情況會(huì)發(fā)生變化:>>> so = 'so'>>> id('so')140614155123728>>> so = 'so'>>> id(so)140614155123728>>> not_so = 'so'>>> id(not_so)140614155123728因此,一旦變量持有該值,它就會(huì)凍結(jié)id。實(shí)際上,之后del so和del not_so的輸出id('so')再換一次。這是不與(小)整數(shù)相同的行為。我知道不變性和擁有同樣的東西之間沒(méi)有真正的聯(lián)系。id盡管如此,我仍在努力找出這種行為的根源。我相信熟悉蟒蛇內(nèi)部結(jié)構(gòu)的人會(huì)比我更不驚訝,所以我試圖達(dá)到同樣的程度.更新用不同的字符串做同樣的嘗試會(huì)產(chǎn)生不同的結(jié)果.>>> id('hello')139978087896384>>> id('hello')139978087896384>>> id('hello')139978087896384現(xiàn)在它是平等.。
查看完整描述

3 回答

?
四季花海

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

此行為特定于Python交互式shell。如果我將以下內(nèi)容放入.py文件中:

print id('so')print id('so')print id('so')

并執(zhí)行它,我將收到以下輸出:

2888960
2888960
2888960

在CPython中,字符串文本被視為常量,我們可以在上面片段的字節(jié)碼中看到:

  2           0 LOAD_GLOBAL              0 (id)
              3 LOAD_CONST               1 ('so')
              6 CALL_FUNCTION            1
              9 PRINT_ITEM          
             10 PRINT_NEWLINE       

  3          11 LOAD_GLOBAL              0 (id)
             14 LOAD_CONST               1 ('so')
             17 CALL_FUNCTION            1
             20 PRINT_ITEM          
             21 PRINT_NEWLINE       

  4          22 LOAD_GLOBAL              0 (id)
             25 LOAD_CONST               1 ('so')
             28 CALL_FUNCTION            1
             31 PRINT_ITEM          
             32 PRINT_NEWLINE       
             33 LOAD_CONST               0 (None)
             36 RETURN_VALUE

這個(gè)常量(即相同的字符串對(duì)象)被加載3次,因此ID是相同的。


查看完整回答
反對(duì) 回復(fù) 2019-06-29
?
蝴蝶刀刀

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

因此,雖然Python不能保證對(duì)字符串進(jìn)行實(shí)習(xí),但它將經(jīng)常重用相同的字符串,并且is可能會(huì)誤導(dǎo)。重要的是要知道你不應(yīng)該檢查idis為了相等的字符串。

為了演示這一點(diǎn),我發(fā)現(xiàn)了一種至少在Python2.6中強(qiáng)制使用新字符串的方法:

>>> so = 'so'>>> new_so = '{0}'.format(so)>>> so is new_so 
False

下面是Python的一些探索:

>>> id(so)102596064>>> id(new_so)259679968>>> so == new_soTrue


查看完整回答
反對(duì) 回復(fù) 2019-06-29
  • 3 回答
  • 0 關(guān)注
  • 516 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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