面试题答案
一键面试整数对象缓存范围
在Python中,通常 -5
到 256
这个范围内的整数对象会被缓存复用。例如:
a = 100
b = 100
print(a is b)
上述代码中,a
和 b
指向的是同一个对象,因为 100
在 -5
到 256
这个缓存范围内。
利用缓存机制优化内存使用
在简单的数值计算场景中,如果计算结果在缓存范围内,可以减少不必要的对象创建。例如,在一个频繁使用固定范围内整数进行运算的循环中:
result = 0
for i in range(100):
# 假设这里的计算结果在缓存范围内
temp = i + 100
result += temp
由于 i + 100
的结果(这里假设在 -5
到 256
之间)会复用已缓存的整数对象,而不是每次都创建新的整数对象,从而优化了内存使用。如果计算结果超出该范围,可以考虑通过类型转换或条件判断等方式,尽量让计算结果在缓存范围内。比如:
num = 1000
if num < 257:
# 进行某些操作
pass
else:
num = num % 257 # 使结果在缓存范围内
这样通过合理利用缓存机制,可以在简单数值计算场景中优化内存使用。