Python常量池

本文深入探讨了Python中常量池的工作原理,特别是在整数对象的缓存方面,揭示了Python如何通过预先缓存常用整数来提高运行效率。特别关注了整数范围-5到256内的缓存特性,以及257这一特殊值的处理方式。

在python里,有一个神奇的机制:常量池

Python 内部做了一些优化,Python把常用的整数对象都预先缓存起来

特点:

  1.整数范围: -5 -- 257

  2.它永远不会被GC机制回收, 只要定义的整数变量在 范围: -5  --  256内,会被全局解释器重复使用, 257除外

  3.只要在这个 -5  --  256 范围内,创建同一区域代码块的变量的值如果是相等的,那么不会创建新对象(python万物皆对象,数值也是对象),直接引用。

一:

a = 123
b = 123
print(id(a)) >>> 1744793632
print(id(b)) >>> 1744793632 

二:

def test_a():
    a = 123
    print(id(a))


def test_b():
    b = 123
    print(id(b))

c = 123 
print(id(c)) >> 1744793632 test_a() >>>
1744793632
test_b() >>> 1744793632

三:奇葩的257


def test_a():
a = 257
b = 257
print(id(a)) # 1872078405424
print(id(b)) # 1872078405424


num1 = 257
num2 = 257
print(id(num1)) # 1872077827792
print(id(num2)) # 1872077827792
test_a()

257 这个整数对象是区分作用域的,它只有在相同的作用域, 内存地址才会相同

 

转载于:https://www.cnblogs.com/leixiansheng6f6/p/9282018.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值