这篇文章主要介绍了python变量的值可以改变吗,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
在python中 is 是用来比较两个对象是否为同一个对象,== 是用来比较两个对象内容是否相等。
仔细想来这两个还是用的十分精准生动的python turtle库函数。
举个例子:
一行一行说:
定义两个变量a、b都等于1,
判断 a == b,此时判断的是a的值是否和b的值相等,答案是肯定的,所以返回true。
id函数可以打印出来对象在内存中的唯一标识,也就是内存地址。
那么id(a) == id(b)呢,由于a与b的值相等,在python中不可变数据类型有:数字、字符串、元祖,不可变的意思是,如果内存中已经有了一个变量值,这个值是不允许改变的,如果改变了就是新建一个对象,对于相同的值在内存中只会有一个,比如上例中的1,在这个对象内部会有一个引用计数器来计算有多少个引用,如上例,有a与b两个引用。所以在判断两个地址的时候,会返回true。
判断id(a) is id(b) 的时候,由于id(a) 是作为一个对象来看待,id(b)也同样作为一个对象来看待,那么这两个对象是不同的。
扩展下:
如果是可变类型的话(列表、字典),是允许有多个相同值存在于内存中的,每个值都是可以改变的,对象内存地址不会变,比如:
定义 a 为一个列表,元素只有一个为 1, b也是如此,
打印a和b的内存地址,可以发现可变类型在内存中,相同值的对象是可以有多个,如上,为两个不同的对象。
起初没有意识到这些,还是感觉python的设计很有意思,耐人寻味。