python is id 的差別,cmp方法

2021-09-06 07:04:16 字數 726 閱讀 8536

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...