标签:函数 false 为什么 print 解释 str put 应该 strong
? 在深处,我们都一样 *class WTF:
pass
Output:
>>> WTF() == WTF() # 两个不同的对象不相等
False
>>> WTF() is WTF() # id一样不相等
False
>>> hash(WTF()) == hash(WTF()) # 哈希值也“应该”不相等
True
>>> id(WTF()) == id(WTF())
True
id
函数时,Python 建立一个名为WTF
的对象并把它传入id
函数. id
函数拿到它的 id
(它的内存位置), 然后丢弃这个对象。不过为什么用 is
比较结果是 False
呢? 让我们来看看。
class WTF(object):
def __init__(self): print("I") # 创建时触发
def __del__(self): print("D") #丢弃时触发
输出:
>>> WTF() is WTF()
I # 创建1
I # 创建2,比较,内存位置不同,返回false
D # 删除1
D # 删除2
False
>>> id(WTF()) == id(WTF())
I #创建1
D #记住内存,连同内存一起删掉
I #创建2,它用了1的内存(因为1已经删掉),比较,两个内存相同。
D #删除2
True
python每日一帖---难懂的现象+清楚的解释---我们都一样
标签:函数 false 为什么 print 解释 str put 应该 strong
原文地址:http://blog.51cto.com/13946759/2168977