python中==和is的区别
==比较的是值,is比较的是内存地址也就是id。这里会引入一个堆栈概念:堆中存的是对象,栈中存的是基本数据类型和堆中对象的引用
列表是数据结构且为可变对象,开辟内存后存在于堆里,是两个不同的内存地址,但值相同。
a=[1,2] b=[1,2] print( a is b) print( a == b)
数据类型开辟内存之后存在栈里,python中通过引用使用它,故id、值相同
c=4 b=4 print( c is b) print( c == b)
==比较的是值,is比较的是内存地址也就是id。这里会引入一个堆栈概念:堆中存的是对象,栈中存的是基本数据类型和堆中对象的引用
列表是数据结构且为可变对象,开辟内存后存在于堆里,是两个不同的内存地址,但值相同。
a=[1,2] b=[1,2] print( a is b) print( a == b)
数据类型开辟内存之后存在栈里,python中通过引用使用它,故id、值相同
c=4 b=4 print( c is b) print( c == b)