Python基础之小整数对象池和大整数对象池

1. 小整数对象池

  • 对于小整数对象使用了对象池技术。设置小整数的范围为[-5,256]。在这个范围内的小整数,任意相同的整数都是同一个对象,同理,单个字母也是这样的

  • 小整数的缓冲池是在Python初始化的时候被创建的

  • intern机制处理空格一个单词的复用机会大,所以创建一次,有空格创建多次,但是字符串长度大于20,就不是创建一次了

a = -5
b = -5
a is b  # True

a = 256
b = 256
a is b  # True

a = 1000
b = 1000
a is b  # True

a = 'abc'
b = 'abc'
a is b  # True

a = 'helloworld'
b = 'helloworld'
a is b  # True

a = 'hello world'
b = 'hello world'
a is b  # False

2. 大整数对象池

  • 超出小整数的范围即为大整数,每次都会创建一个新的对象。但是处于一个代码块的大整数是同一个对象。

  • 终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象

  • 在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象

a = 1000
b = 1000
a is b  # False

a = -1888
b = -1888
a is b  # False

class C1(object):
    a = 100
    b = 100
    c = 1000
    d = 1000
    
class C2(objcet):
    a = 100
    b = 1000
    
print(C1.a is C1.b)  # True
print(C1.a is C1.a)  # True
print(C1.c is C1.d)  # True
print(C1.d is C1.b)  # Falsec
原文地址:https://www.cnblogs.com/featherwit/p/12875158.html