09 從記憶體看python中的is與 的區別

2021-08-14 14:35:14 字數 633 閱讀 1644

先上乙個例子!

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的時間用於等待磁碟去讀取資料。...