zoukankan      html  css  js  c++  java
  • python基础之小数据池

    关于池的概念,大家也许知道 连接池,代理池。然而现在我们提到的小数据池,则是一些Int和string已经创建好的并放在池子里等着我们去调用的对象。

    '''对于整数,Python官方文档中这么说:
    The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object. So it should be possible to change the value of 1. I suspect the behaviour of Python in this case is undefined.
    
    对于字符串:
    Incomputer science, string interning is a method of storing only onecopy of each distinct string value, which must be immutable. Interning strings makes some stringprocessing tasks more time- or space-efficient at the cost of requiring moretime when the string is created or interned. The distinct values are stored ina string intern pool. –引自维基百科
    '''

    Python自动将-5~256的整数进行了缓存,当你将这些整数赋值给变量时,并不会重新创建对象,而是使用已经创建好的缓存对象。

    python会将一定规则的字符串在字符串驻留池中,创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。

    其实,无论是缓存还是字符串驻留池,都是python做的一个优化,就是将~5-256的整数,和一定规则的字符串,放在一个‘池’(容器,或者字典)中,无论程序中那些变量指向这些范围内的整数或者字符串,那么他直接在这个‘池’中引用,言外之意,就是内存中之创建一个。

    优点:能够提高一些字符串,整数处理人物在时间和空间上的性能;需要值相同的字符串,整数的时候,直接从‘池’里拿来用,避免频繁的创建和销毁,提升效率,节约内存。

    缺点:在‘池’中创建或插入字符串,整数时,会花费更多的时间。

    int:那么大家都知道对于整数来说,小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址。

    string: 

      1.字符串的长度为0或者1,默认都采用了驻留机制(小数据池)。

      2.字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留。

      3.用乘法得到的字符串

        1)乘数为1时:

          仅含大小写字母,数字,下划线,默认驻留。

          含其他字符,长度<=1,默认驻留。

          含其他字符,长度>1,默认驻留。

        2)乘数>=2时:

          仅含大小写字母,数字,下划线,总长度<=20,默认驻留。

      4.指定驻留。

        需要调用sys模块中的intern方法

        from sys import intern

        a = intern('hello'*20)

        b = intern('hello'*20)

        print(a is b) # True

    简单的总结一下 如果查看两个变量,并且这两个变量属于小数据池的范畴,则他们的id相同

  • 相关阅读:
    js在html中的加载执行顺序
    外部JS的阻塞下载
    mysql 中文字段排序
    PHP 多维数组排序 array_multisort()
    最简单的Linux下apache+mysql+php安装
    [TJOI2008] 彩灯 (线性基)
    [洛谷P2257] YY的GCD (莫比乌斯反演)
    [SDOI2015] 约数个数和 (莫比乌斯反演)
    [POI2007] ZAP-Queries (莫比乌斯反演)
    [NOI2003] 文本编辑器 (splay)
  • 原文地址:https://www.cnblogs.com/wuxiaoshi/p/9737377.html
Copyright © 2011-2022 走看看