在Python中的交互模式,當我說,查詢的名稱和對象在Python
>>> mystr = 'abc'
我們對象string
型的當前幀的內容創建現在'abc'
,如果我改變如下所示的mystr
結合,
>>> mystr = 'def'
然後,該名稱mystr
將結合一個新的對象與所述內容'def'
。
我們知道字符串是不可變的對象,因此包含'abc'
的對象不受影響。
在我的機器它的工作原理是這樣的:
>>> mystr = 'abc'
>>> id(mystr)
30868568
>>> mystr = 'def'
>>> id(mystr)
36585632
>>> mystr = 'abc'
>>> id(mystr)
30868568
我的問題:
如何Python環境處理含後新的結合「ABC」,對象將它清除?
這是一個實現細節,但是在CPython中,小字符串會被攔截,並且當您的引用消失時,「abc」不會被刪除。 (順便說一句,永遠不要命名變量'str',因爲它會影響內建類型的對象...) – geoffspear
http://stackoverflow.com/questions/10622472/when-does-python-choose-to-intern-a字符串可能會有所幫助。 – geoffspear
你是對的martijn – overexchange