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

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

賦值運(yùn)算符和變量標(biāo)識(shí)符

賦值運(yùn)算符和變量標(biāo)識(shí)符

qq_遁去的一_1 2021-10-26 16:40:11
以下代碼 (python3) 打印 5 而不是 4。x = 5y = xx = 4print(y)但是,我時(shí)不時(shí)地會(huì)發(fā)現(xiàn)發(fā)生相反行為的情況,即變量被分配到內(nèi)存中的某個(gè)位置,而不是存儲(chǔ)在那里的值。有幾次我在我的代碼中發(fā)現(xiàn)了一個(gè)錯(cuò)誤,因?yàn)檫@樣的事情。是否存在與上述代碼(以及在 Python 中)類(lèi)似的情況,其中初學(xué)者可能希望代碼將一個(gè)變量的當(dāng)前值存儲(chǔ)在一個(gè)新變量中,而不是分配標(biāo)識(shí)符的值?另外,我的意思并不是在這里用“值”和“變量”這兩個(gè)詞來(lái)強(qiáng)加任何特定的數(shù)據(jù)類(lèi)型,所以如果這些術(shù)語(yǔ)不正確,我深表歉意。如果有一些關(guān)于這種行為如何在一些常見(jiàn)語(yǔ)言(特別是 python、javascript、java、c、haskell)上變化的評(píng)論,我很想聽(tīng)聽(tīng)。當(dāng)然,對(duì)于這個(gè)問(wèn)題的適當(dāng)術(shù)語(yǔ)(以及如何標(biāo)記它)的任何建議也將不勝感激。編輯:我正在接受一個(gè)答案,該答案描述了行為如何隨不可變/可變類(lèi)型而變化,因?yàn)檫@可能是我遇到的行為,并且我特別詢(xún)問(wèn)了初學(xué)者程序員的困惑來(lái)源。但是,帶著類(lèi)似問(wèn)題訪(fǎng)問(wèn)此頁(yè)面的人還應(yīng)該參考評(píng)論部分,該部分表明一般答案并不像可變/不可變數(shù)據(jù)類(lèi)型那么簡(jiǎn)單。
查看完整描述

3 回答

?
絕地?zé)o雙

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

>>> 1

1

>>> id(1)

140413541333480

>>> x = 1

>>> id(x)

140413541333480

>>> z = 1

>>> id(z)

140413541333480

>>> y = x

>>> id(y)

140413541333480

>>>

出于優(yōu)化的目的,只有 1 的單個(gè)副本,并且所有變量都引用它。


現(xiàn)在,python 中的整數(shù)和字符串是不可變的。每次定義一個(gè)新的時(shí),都會(huì)生成一個(gè)新的引用/ID。


>>> x = 1 # x points to reference (id) of 1

>>> y = x # now y points to reference (id) of 1

>>> x = 5 # x now points to a new reference: id(5)

>>> y     # y still points to the reference of 1

1

>>> x = "foo" 

>>> y = x

>>> x = "bar"

>>> y

'foo'

>>> 

列表、字典是可變的,也就是說(shuō),你可以在同一個(gè)引用處修改值。


>>> x = [1, 'foo']

>>> id(x)

4493994032

>>> x.append('bar')

>>> x

[1, 'foo', 'bar']

>>> id(x)

4493994032

>>>

因此,如果您的變量指向一個(gè)引用并且該引用包含一個(gè)可變值并且該值已更新,則該變量將反映最新值。


如果引用被覆蓋,它將指向引用所指向的任何內(nèi)容。


>>> x = [1, 'foo']

>>> y = x  # y points to reference of [1, 'foo'] 

>>> x = [1, 'foo', 'bar'] # reference is overridden. x points to reference of [1, 'foo', 'bar']. This is a new reference. In memory, we now have [1, 'foo'] and [1, 'foo', 'bar'] at two different locations. 

>>> y

[1, 'foo']

>>>


>>> x = [1, 'foo']

>>> y = x

>>> x.append(10) # reference is updated

>>> y

[1, 'foo', 10]

>>> x = {'foo': 10}

>>> y = x

>>> x = {'foo': 20, 'bar': 20}

>>> y

{'foo': 10}

>>> x = {'foo': 10}

>>> y = x

>>> x['bar'] = 20 # reference is updated

>>> y

{'foo': 10, 'bar': 20}

>>>

您的問(wèn)題的第二部分(通用語(yǔ)言)太寬泛了,Stackoverflow 不是解決這個(gè)問(wèn)題的合適論壇。請(qǐng)對(duì)您感興趣的語(yǔ)言進(jìn)行研究 - 每個(gè)語(yǔ)言組及其論壇上都有大量可用信息。


查看完整回答
反對(duì) 回復(fù) 2021-10-26
?
慕運(yùn)維8079593

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

x = 5   

id(x) = 94516543976904     // Here it will create a new object


y = x    

id(y) = 94516543976904    // Here it will not create a new object instead it will refer to x (because both of them have same values).


x = 4

id(x) = 94516543976928    // Here we are changing the value of x. A new object will be created because integer are immutable.



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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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