卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

immutable原理 python中的immutable和mutable(不可變與可變)應(yīng)該怎么理解?

python中的immutable和mutable(不可變與可變)應(yīng)該怎么理解?Python數(shù)據(jù)類型分為可變和不可變。不可變類型包含字符串(STR)、整數(shù)(int)、元組(tuple);變量類型包含列

python中的immutable和mutable(不可變與可變)應(yīng)該怎么理解?

Python數(shù)據(jù)類型分為可變和不可變。不可變類型包含字符串(STR)、整數(shù)(int)、元組(tuple);變量類型包含列表(list)、字典(dict)。它是否為變量類型取決于內(nèi)存單元的值是否可以更改。如果內(nèi)存單元的值不可更改,在對(duì)對(duì)象本身進(jìn)行操作時(shí),必須在內(nèi)存的另一部分申請(qǐng)另一個(gè)內(nèi)存單元(因?yàn)榕f的內(nèi)存單元是不可變的),舊的內(nèi)存單元將被丟棄(如果有其他的ref,ref數(shù)將減少1,類似于Unix中的硬鏈接);如果它是可變的,在對(duì)對(duì)象進(jìn)行操作時(shí),不需要再使用它來(lái)申請(qǐng)其它地方的內(nèi)存,只需要在這個(gè)對(duì)象之后連續(xù)(/-)地申請(qǐng),即它的地址不變,但區(qū)域會(huì)變長(zhǎng)或變短。

Scala中的Seq和List之間的區(qū)別?

Scala的SEQ將是Java的列表,Scala的列表將是Java的LinkedList。請(qǐng)注意,SEQ是一個(gè)trait,相當(dāng)于Java的接口,但相當(dāng)于即將推出的defender方法。Scala的list是一個(gè)抽象類,由nil和::擴(kuò)展,后者是list的具體實(shí)現(xiàn)。因此,Java中的list是一個(gè)接口,scala中的list是一個(gè)實(shí)現(xiàn)。另外,Scala的列表是不可變的,這與LinkedList不同。事實(shí)上,Java沒(méi)有等價(jià)的不可變集(只讀的東西只能保證新的對(duì)象不能被更改,但是您仍然可以更改舊的對(duì)象,所以“只讀”一個(gè))。Scala的列表由編譯器和庫(kù)進(jìn)行了高度優(yōu)化。它是函數(shù)式編程中的基本數(shù)據(jù)類型。但是,它有局限性,對(duì)于并行編程來(lái)說(shuō)是不夠的。如今,向量是一個(gè)比列表更好的選擇,但習(xí)慣很難打破。Seq是一個(gè)很好的泛化序列,所以如果你對(duì)一個(gè)接口編程,你應(yīng)該使用它。請(qǐng)注意,實(shí)際上有三種:收藏序列, 集合.mutable.Seq以及collection.immutable.Seq集合,這是范圍的“默認(rèn)”導(dǎo)入。genseq和parseq。后一種方法在可能的情況下并行運(yùn)行。前者是SEQ和parseq的父級(jí),當(dāng)代碼的并行性無(wú)關(guān)時(shí),這是一種適當(dāng)?shù)姆夯?。它們相?duì)較新,所以人們不會(huì)使用它們。