Python複習筆記——is

在網上搜了一下,不少人發帖問python的is==這兩個比較操做符的區別,關於這個,官方文檔有一些說明。python

The operators is and is not test for object identity: x is y is true if and only if x and y are the same object. x is not y yields the inverse truth value.ide

上面說明了is操做符用來判斷兩個操做數是否是同一個對象,也就是它們引用的是否是同一個對象。
不過在下面註釋那裏又指出,code

Due to automatic garbage-collection, free lists, and the dynamic nature of descriptors, you may notice seemingly unusual behaviour in certain uses of the is operator, like those involving comparisons between instance methods, or constants. Check their documentation for more info.對象

由於自動GC,涉及到實例方法或者常量的比較的時候,你可能會看到一些不一樣尋常的現象。
這裏的常量應該是說這種狀況ip

>>> x=1
>>> y=1
>>> x is y
True
>>> id(x)
140504559802792
>>> id(y)
140504559802792

這裏之因此,x is yTrue多是爲了減小內存分配,採用了相似了C的作法,把常量數據放在一個固定的區域,而後若是後面有使用相應的常量,則直接引用。
至於實例方法,等找個例子才寫。內存

相關文章
相關標籤/搜索