国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

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)存單元的值不可更改,在對對象本身進(jìn)行操作時,必須在內(nèi)存的另一部分申請另一個內(nèi)存單元(因?yàn)榕f的內(nèi)存單元是不可變的),舊的內(nèi)存單元將被丟棄(如果有其他的ref,ref數(shù)將減少1,類似于Unix中的硬鏈接);如果它是可變的,在對對象進(jìn)行操作時,不需要再使用它來申請其它地方的內(nèi)存,只需要在這個對象之后連續(xù)(/-)地申請,即它的地址不變,但區(qū)域會變長或變短。

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

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