record={"Name":"Python","age":"20"}.
x=record.copy()
print(id(x)==id(記錄))
為什么當我運行它時,它的輸出結果是False呢?
uj5u.com熱心網友回復:
根據內置的id()函式https://docs.python.org/3/library/functions.html#id的定義,它回傳一個物件的 "身份"。這是一個整數,保證該物件在其生命周期內是唯一的和恒定的。
copy(),從現有的 dictionary 創建一個新的 dictionary 物件。
陳述句print(id(x)==id(record))指出x和record有重疊的生命周期。
uj5u.com熱心網友回復:
可變物件的副本是不同的、自主的實體,最初具有相同的內容,但可以單獨改變。 作為比較,不可變物件(例如元組)的副本參考相同的記憶體空間,因為其內容永遠不會改變。
你可以在具有相同內容的不可變物件(例如圖元)上觀察到這一現象,這些物件具有相同的id,盡管它們甚至不是彼此的副本:
t = (1,2, 3)
id(t)
140707126155016
u = (1,2,3)
id(t)
140707126155016
>>>。
對于易變的物件(如list、dict),copy()方法會創建一個新的實體,并復制內容。
>>> d = [1,2, 3]
>>> c = d.copy()
>>> d,id(d)
([1, 2, 3], 140707126669064)
>>> c,id(c)
([1, 2, 3], 140707126356872)
>>> c[1] = 5 #只影響c實體(不影響d)。
>>> d, id(d)
([1, 2, 3], 140707126669064)
>>> c, id(c)
([1, 5, 3], 140707126356872)
一個簡單的變數賦值將參考復制到同一個實體,所以兩個變數(原始的和賦值的)都參考同一個內容(可以被修改):
>>> d = [1, 2, 3]
>>> c = d
>>> d[1] = 5 # c和d都看到相同的實體。
>>> c, id(c)
([1, 2, 3], 140707126135240)
>>> d, id(d)
([1, 2, 3], 140707126135240)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311635.html
標籤:
