為什麼python有相同的不可變物件id不同

2022-12-19 16:41:04 字數 1985 閱讀 8712

1樓:霞左丞永

這就涉及到python的記憶體管理機制了,python裡面,所有變數都是物件,資料在記憶體中佔用實體記憶體,然後指標的頭指向不同的物件,就好比兩臺相同的電腦,編號卻不一樣,這其實是兩個物件;但是也不是所有物件都是這樣處理的,為了節省記憶體,對於小的整數和短的字串,python在處理的時候會把相同的資料指向不同的物件,但它們的id是一樣的。

python中id函式為什麼會對不同物件返回相同值

2樓:匿名使用者

如果那兩個物件指向的是相同的記憶體地址,也就是說內部指向的其實是一個物件,那他們的id返回值就是一樣的。

python不同程序的類的例項id為什麼一樣的

3樓:譙冷

可以把類當做引數傳入到函式裡,在函式裡進行例項化。如下所示。把類a當做引數傳入get_instance_from_class。

在get_instance_from_class中對a進行例項化,獲得其例項,並返回。12345678910111213class a: def __init__(self):

print "i am a a instance." def print_myself(self): print "print myself.

"def main(): def get_instance_from_class(a): return a() a = get_instance_from_class(a) a.

print_myself() if __name__=="__main__": main()

python 裡的可變物件與不可變物件具體怎麼理解

4樓:琳姞家菲

python的資料型別分為可變(mutable)與不可變(immutable)。不可變型別包含字串(str),整數(int),元組(tuple);可變型別包含列表(list),字典

專(dict)。

是否為可變型別在於記憶體單元的值是否可以被改變。屬如果是記憶體單元的值不可改變的,在對物件本身操作的時候,必須在記憶體的另外地方再申請一塊記憶體單元(因為老的記憶體單元不可變),老的記憶體單元就丟棄了(如果還有其他ref,則ref數字減1,類似unix下的hard-link);如果是可變的,對物件操作的時候,不需要再在其他地方申請記憶體,只需要在此物件後面連續申請(+/-)即可,也就是它的地址會保持不變,但區域會變長或者變短。

關於python中的不可變物件--字串

5樓:gta小雞

不可變物件的意思是不能在原處改變物件的值。不代表不能存在兩個值相同的不可變物件。str(a)和str(b)會各在記憶體中建立一個值為'10'的物件。

新手,一個關於python可變與不可變物件的問題

6樓:匿名使用者

所謂物件的可變與不可變,是看物件是否有hash值。

為什麼python有相同的不可變物件id不同

7樓:匿名使用者

python裡一切都是物件.

所以1,2,3,4...這些整數也都是物件.這些基本的不可變物件在python裡會被頻繁的引用,建立,如果不找到好的辦法的話很容易讓python引發效率瓶頸,所以python引入了整數物件池的機制.

python中可變物件和不可變物件的理解,假如x為全域性變數,當x為int即不可變物件時,

8樓:gta小雞

可變物件:可以直接修改物件記憶體中的值。例如修改列表某一項,實際就是修改列表物件中那個元素的值。

不可變物件:不能直接修改物件記憶體中的值,使用=號賦值實際上是在記憶體中建立了一個新物件,並令變數重新指向該新物件。

python中為什麼用json有什麼作用

不是python用json,json是類似xml的一種通用格式,在很多地方都可以用。json相比xml,資料量更小,而且可以很方便的和解釋型語言的結構相互轉換。json是以一種良好的格式來進行資料的互動,從而在很多時候,可以使用json資料格式作為程式之間的介面,今天我也在這個問題上糾結很久。最後才...

Python程式設計有哪些優點,python的優點有哪些

python程式語言的優點 1 廣泛的資料庫 python有一個可擴充套件的庫,包含了各種區域 其中包含了字串操作 正規表示式等,可以直接拿來使用,直接節省大量的時間。2 可擴充套件性 python具有可拓展性,可以將python直接放置在另外一種 語言中使用,同時python在使用相同位元組 的所...

為什麼這段python出現UnboundLocalError

上一個問題是檔案沒有找到,open的那個地址,下面這個是你要輸出username使用前沒有被賦值 python 錯誤警告 local variable a referenced before assignment 10 在f2 裡面加一句 nonlocal a 就可以,強制的把a宣告成a非本地的區域...