Python 变量的缓存机制

  • Number 部分:同一个文件内,只对python3.6版本之前负责
1.对于整型而言,-5~正无穷范围内的相同值 id一致
2.对于浮点数而言,非负数范围内的相同值 id一致
3.布尔值而言,值相同情况下,id一致
4.复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)

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

var1 = -5
var2 = -5
print(var1,var2)
print(id(var1),id(var2))
"""
>>> var1 = -5
>>> var2 = -5
>>> print(var1,var2)
-5 -5
>>> print(id(var1),id(var2))
140711818158736 140711818158736
>>>
"""

#代码块的作用
var3 = -100
var4 = -100
print(var3,var4)
print(id(var3),id(var4))
"""
>>> var3 = -100
>>> var4 = -100
>>> print(var3,var4)
-100 -100
>>> print(id(var3),id(var4))
2090435299344 2090435299216
"""

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

var1 = 5.88
var2 = 5.88
"""
2090435195432 2090435195456
>>> var1 = 5.88
>>> var2 = 5.88
>>> print(id(var1)  ,  id(var2))
2090435195288 2090435195144
"""

var3 = -5.68
var4 = -5.68
print(id(var1)  ,  id(var2))
print(id(var3)  ,  id(var4))
"""
2090435195144 2090435195168
>>> var3 = -5.68
>>> var4 = -5.68
>>> print(id(var3)  ,  id(var4)
... )
2090435195432 2090435195456
"""

3.布尔值而言,值相同情况下,id一致

var1 = True
var2 = True
print(id(var1),id(var2))
"""
>>> var1 = True
>>> var2 = True
>>> print(id(var1),id(var2))
140711817627984 140711817627984
"""

4.复数在 实数+虚数 这样的结构中永不相同(只有虚数的情况例外)

var1 = 8 +3j
var2 = 8 +3j
print(id(var1),id(var2))

var3 = 8j
var4 = 8j
print(id(var3),id(var4))

"""
>>> var1 = 8 +3j
>>> var2 = 8 +3j
>>> print(id(var1),id(var2))
2090464163920 2090465821296
>>> var3 = 8j
>>> var4 = 8j
>>> print(id(var3),id(var4))
2090435299216 2090465821264
"""
  • 容器类型部分:同一个文件内,只对python3.6版本之前负责

5.字符串 和 空元组 相同的情况下,地址相同

var1 = '你好'
var2 = '你好'
print(id(var1),id(var2))

var3 = ()
var4 = ()
print(id(var3),id(var4))
"""
>>> var1 = '你好'
>>> var2 = '你好'
>>> print(id(var1),id(var2))
2090465255336 2090465906824
>>>
>>> var3 = ()
>>> var4 = ()
>>> print(id(var3),id(var4))
2090434953288 2090434953288
"""

6.列表,元组,字典,集合无论什么情况 id标识都不同 [空元组例外]

var1 = ['1','2']
var2 = ['1','2']
print(id(var1),id(var2))

var3 = {'a','b'}
var4 = {'a','b'}
print(id(var3),id(var4))

var5 = {1:'a'}
var6 = {1:'a'}
print(id(var5),id(var6))
原文地址:https://www.cnblogs.com/CrownYP/p/11340781.html