關于元組是不可變的:
①所謂元組的不可變指的是元組所指向的記憶體中的內容不可變。也就是元組中的元素是不能改變的。
②若對該元組,進行重新賦值,則使允許的。
>>> obj = (1,2,3,4)
>>> id(obj)
52092432
>>> obj[1] = 99
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
obj[1] = 99
TypeError: 'tuple' object does not support item assignment
>>> obj = ('a','c','e')
>>> id(obj)
8331464
我想問一下,這樣之后,原來obj所系結的那個元組,也就是(1,2,3,4)這個,它還存在于記憶體中嗎?還占用記憶體嗎?謝謝大佬了!!!
uj5u.com熱心網友回復:
回答樓主的問題前,先說一點 Python的GC (Garbage Collection)的機制,就是垃圾回識訓制。現在的語言除了C/C++,基本都有GC,包括Golang, Java, Python,Ruby等。 Python的垃圾回收主要采用的是參考計數模式,就是當一個物件沒有被參考時,它的計數變為零。系統在適當的時候就會把這個物件占用的記憶體回收掉。回到樓主的問題,當obj被重新指向到 ('a','c','e') 的時候, (1,2,3,4)這個元組物件已經沒有參考了,就是說它的計數已經變成了零。它沒有用了,系統會在合適的時候自動回收的。不用管它的。
uj5u.com熱心網友回復:
非常感謝層主的,細心回答。我明白了。我剛才c轉過來,有的還不明白!uj5u.com熱心網友回復:
非常感謝層主的細心回答,我明白了!太謝謝了!uj5u.com熱心網友回復:
大佬說的對。轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/21712.html
標籤:區塊鏈技術
