python的is和==
1. is 和 ==
万物皆对象,对象是由id(地址),type(类型),value(值)组成。
- is:判断两个地址是否一样,也就是说它们的引用的是否为同一个对象。
- == :判断两个对象的值是否相等
2. 举例
1. ==
a = 1
b = 1
c = [1, 2, 3]
d = [1, 2, 3, 4]
print('a和b值是否相等', a == b)
print('c和d值是否相等', c == d)
打印结果:
a和b值是否相等 True
c和d值是否相等 False
2. is
a = 1
b = a
c = [1, 2, 3]
d = [1, 2, 3, 4]
print(id(a))
print(id(b))
print(id(c))
print(id(d))
a和b的地址一样,它们引用同一个对象
c和d的地址不一样,它们引用不是同一个对象
3. a = 10 b =10,地址一样吗?
答案是一样的
a = 10
b = 10
print(id(a))
print(id(b))
2285737568848
2285737568848
如果将a和b的值换位列表呢?
地址又不一样了,这又是为什么?
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a))
print(id(b))
2229396321664
2229396321600
缓存池技术:
python为了优化速度,提高效率,避免了频繁的创建和销毁对象,[-5,256]会被认为是频繁使用的整数 它会提前存储在小整数对象池中,数据只要在这个区间内 可以直接引用同一个对象。
a = 10
b = 10
print(id(a))
print(id(b))
print(a is b)
2476320713296
2476320713296
True