先上乙個例子!
list1=[1,2,3]
list2=[1,2,3]
list3=list1
if list1 is list2:
print("true")
else:
print("false")
if list1 == list2:
print("true")
else:
print("false")
===>false
===>true
每乙個常量,列表,元組等資料結構都有乙個位址
先上圖,再講解:
上面說了每乙個常量,列表,元組等資料結構都有乙個自己的記憶體位址.因此1,2,3及兩個列表都有乙個屬於自己的位址.我們把變數名當作便利貼.當你需要用這塊記憶體,只需要對變數名的引用,機器就知道是對這部分記憶體進行操作.
看程式,列表存放的就是1,2,3常量值.其實不然,從記憶體看,它存放的是1,2,3常量對應的位址.如上圖所示.
is 比的是 記憶體位址. == 比的是值.
這就可以理清上面例子的問題了.
希望有助於大家
從類的記憶體結構看C 繼承
先看下面這個簡單的例子,我們建立乙個基類 base class 通過簡單的繼承 inherit 產生兩個派生類 derived class 然後通過乙個基類的指標去呼叫這兩個派生類,並且呼叫類中的函式。class base void show2 class derived1 public base ...
從pyh看Python的工廠模式
設想 1 編寫各種tag型別,如head title body 2 過載 運算,實現類似html head的功能 想到第一點,當時就覺得繁瑣,要定義如此多個類 原諒我當時傻傻的 後來發現個開源專案 pyh工廠模式解析 pyh就乙個原始碼pyh.py,很簡單,以下擷取部分 分析,請尊重原作者,不要直接...
從程式的執行看硬碟 記憶體 CPU的關係
首先先看乙個程式執行大概的過程。我們所看到的 是人可以閱讀的高階語言 但是計算機無法識別。當乙個程式被載入並執行執行的時候,檔案就會被編譯成計算機可讀取的二進位制檔案。這時記憶體會去讀取硬碟上的資料和指令並儲存在記憶體中。由於cpu無法直接讀取硬碟上的資料,大部分cpu的時間用於等待磁碟去讀取資料。...