zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    编译原理词/语法分析
    【转】 c# 中为何load事件中不能画图
    [原创]GAMITGLOBK数据处理报告
    Google Earth上的点标记
    序贯平差
    【原创】C#写的水准网平差程序
    楼梯问题:一次最多跨两个阶梯,有多少种走法
    springMVC + Dubbo + zooKeeper超详细 步骤
    Git(to be continued...)
    autoconf & automake
  • 原文地址:https://www.cnblogs.com/featherwit/p/12875158.html
Copyright © 2011-2022 走看看