python中变量缓存机制是什么

  

python中变量缓存机制是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。


只要有两个值相同,就只开辟一个空间

为什么要有这样的机制

在计算机的硬件当中,内存是最重要的配置之一,直接关系到程序的运行速度和流畅度。在过去计算机内存资源昂贵而小的年代中,程序的内存管理成为编程中的重要技术之一.python没有C/c++中的指针那样的定义可以编程者自主的控制内存的分配,而是有一套自动的内存地址分配和缓存机制。在这个机制当中,可以把一些相同值的变量在内存中指向同一块区域,而不再重新开辟一个空间,这样就达到了节省内存的目的。

 python中变量缓存机制是什么”> <br/> <img src=

python中使用id()函数查看数据的内存地址

数部分

整型

对于整型而言,5 ~ ~正无穷的范围内的相同值的id地址一致

#,在后续的版本中所有的数的id地址都一致      #,相同   打印(id (9999999), id (9999999))   打印(id (100), id (100))   打印(id (5), id (5))      #,不同   打印(id (6), id (6))

浮点型

对于浮点型而言,非负数范围内的相同值id一致

#,相同   打印(id (9999999.0),, id (9999999.0))   打印(id (100.0),, id (100.0))      #,不同   打印(id (-5.0),, id (-5.0))   打印(id (-6.0),, id (-6.0))

布尔值

对于布尔值而言,值相同测情况下,id一致

#,相同   打印(id(真正的),身份证(真正的))   打印(id (False), id(假))

复数

复数在(实数+虚数)这样的结构当中永不相同,只有单个虚数相同才会一致

#,相同   打印(id (1 j), id (1 j))   打印(id (0 j), id (0 j))      #,不同   打印(id (1234 j), id (3456 j))   打印(id (1 + 1 j),身份证(1 + 1 j))   打印(id (2 + 0 j),身份证(2 + 0 j))

容器部分

字符串

字符串在相同的情况下,地址相同

#,相同   打印(id (& # 39; hello  & # 39;),, id (“hello “))      #,不同   打印(id (& # 39; msr # 39;),, id (& # 39; wxd& # 39;))

字符串配合使*号使用有特殊的情况:

乘数为1:只要数据相同,地址就是相同的

#,等于1,和正常的情况下是一样的,只要值相同地址就是一样的   时间=a  & # 39; hello  & # 39; *, 1   时间=b  & # 39; hello  & # 39; *, 1   打印(a  is  b)   时间=a  & # 39;祖国& # 39;*,1   时间=b  & # 39;祖国& # 39;*,1   打印(a  is  b)

乘数大于1:只有仅包含数字,字母,下划线时地址是相同的,而且字符串的长度不能大于20

#,纯数字字母下划线,且长度不大于20   时间=a  & # 39; _70th& # 39; *, 3   时间=b  & # 39; _70th& # 39; *, 3   时间=c  & # 39; _70th_70th_70th& # 39;   打印(a,, id (a),, len (a))   print (b, id (b), len (b))   打印(c, id (c), len (c))   print (a  is  b  is  c)   & # 39;& # 39;& # 39;   结果:   _70th_70th_70th  1734096389168, 15   _70th_70th_70th  1734096389168, 15   _70th_70th_70th  1734096389168, 15   真正的   & # 39;& # 39;& # 39; #,纯数字字母下划线,长度大于20   时间=a  & # 39; motherland_70th& # 39; *, 3   时间=b  & # 39; motherland_70th& # 39; *, 3   时间=c  & # 39; motherland_70thmotherland_70thmotherland_70th& # 39;   打印(a,, id (a),, len (a))   print (b, id (b), len (b))   打印(c, id (c), len (c))   print (a  is  b  is  c)   & # 39;& # 39;& # 39;   结果:   motherland_70thmotherland_70thmotherland_70th  2281801354864, 45   motherland_70thmotherland_70thmotherland_70th  2281801354960, 45   motherland_70thmotherland_70thmotherland_70th  2281801354768, 45   假   & # 39;& # 39;& # 39; #,有其它字符,且长度不大于20   时间=a  & # 39;你好& # 39;*,3   时间=b  & # 39;你好& # 39;*,3   时间=c  & # 39;你好你好你好& # 39;   打印(a,, id (a),, len (a))   print (b, id (b), len (b))   打印(c, id (c), len (c))   print (a  is  b  is  c)   & # 39;& # 39;& # 39;   结果:   你好你好你好,3115902573360,6   你好你好你好,3115902573448,6   你好你好你好,3115900671904,6   假   & # 39;& # 39;& # 39;

python中变量缓存机制是什么