摘要
在大多数编程语言中(如JS、PHP等)比较两个值是否相等,往往是借助于==(等于)或===(全等于)。不同的是,在Python中并没有===(全等于)符号,而只有is和==。
在大多数编程语言中(如JS、PHP等)比较两个值是否相等,往往是借助于==(等于)或===(全等于)。不同的是,在Python中并没有===(全等于)符号,而只有is和==。
看到这里,相信很多人都会产生疑问?Python中is和==两者的区别是什么,是否等同于其它编程语言中的===呢?
这里有必要提一点,Python中的每个对象都有三种属性:id, type, value。不同对象实例的id一定是不同的,可以把id看做是和内存地址一一对应的。
要区别is和==两者的区别,我们可以这样去记:==比较的是值,is比较的是内存地址。
当然了,在Pyhon3中也有一个例外不太符合大家的认知:Python3在实现整型中对于小于-5的数,会新建对象(在内存中开辟新的地址)。
例子如下:
- # 请在Python3中运行此代码
- n1 = -6
- n2 = -6
- print(n1 is n2) # False
- n3 = n1
- print(n1 is n3) # True
注:笔者不知道这个算不算Python版本升级中的bug,上面的代码在Python3中返回False和True,在Python2中确返回True和True。