1. id():獲取的是物件在記憶體中的位址
2. is :比對2個變數的物件引用(物件在記憶體中的位址,即id() 獲得的值)是否相同。如果相同則返回true,否則返回false。換句話說,就是比對2個變數的物件引用是否指向同乙個物件。
3. ==:比對2個變數指向的物件的內容是否相同。
下面通過cmp函式比較兩個物件的差異:
1 class myclass(object):2 def __init__(self, name):
3 self.name = name
4 5 def __cmp__(self, other):
6 return cmp(self.name, other.name) 78
9 10 a = myclass('leon')
11 b = myclass('leon')
12 print a is b
13 print a == b
14 print id(a)
15 print id(b)
16 print cmp(a, b)
先看cmp函式的用法,原型為cmp
(x, y
),作用是比較兩個物件x,y,如果x大於y返回正數,相等則返回0,否則返回負數,示例裡myclass類用了__cmp__,用以自定義比較物件,如果注釋此方法,個人認為預設為會比較a,b物件的id值。
python cmd模組 Python的cmd模組
0x00 關於cmd模組 使用cmd模組建立的命令列直譯器可以迴圈讀取輸入的所有行並且解析它們 0x01 cmd模組的一些常用方法 cmdloop 類似與tkinter的mainloop,執行cmd解析器 onecmd str 讀取輸入,並進行處理,通常不需要過載該函式,而是使用更加具體的do co...
「 」「 Equals」之間的差別。
equals 方法只是在 system.object 中定義的乙個虛擬方法,它由任何選擇執行該任務的類所重寫。運算子是乙個可由類過載的運算子,該類通常具有恒等行為。對於未過載 的引用型別,該運算子會比較兩個引用型別是否引用同一物件,而這恰好是 system.object 中的 equals 實現所做...
ifdef和 if的差別
最近專案要從windows平台移植到linux平台,所以做了很多相容性相關的工作。遇到乙個小問題,我想通過win32巨集來區分兩個平台,之前以外win32變數是自己定義到,所以我做了如下宣告 define win32 1 1 windows,0 linux 程式中這樣使用 if win32 1 do...