代码块的缓存机制
在同一代码块(函数、py文件)中:
1.数字:如果两变量的值相同,且都<-5,则指向不同的地址。否则第二个变量的值会覆盖第一个(即指向相同的地址)
2.字符串:乘法的时候长度不能超过20 # "hello"*2
3.布尔值:内容相同就指向相同的内存地址
#test.py
a=1000
b=1000
print(id(a)) #2004468084528
print(id(b)) #2004468084528
如上:a和b在同一代码块(py文件)下,两者指向相同的地址
小数据池
两值分别在不同的代码块中:
1.数字:两值相同且都在-5~256之间,则两值指向相同的地址。除此之外,两值指向的地址不同
2.字符串:乘法的时候总长度不能超过20
3.布尔值:内容相同则内存地址相同
#test.py
def fun1():
a=100
print(id(a))
def fun2():
a=100
print(id(a))
fun1() #1704097904
fun2() #1704097904
---------如上:两个函数中的a分别在不同代码块中,但是值在-5~256之间
def fun3():
a=1000
print(id(a))
def fun4():
a=1000
print(id(a))
fun3() #1802260426448
fun4() #1802290428656
----------如上:两个函数中的a分别在不同代码块中,但是值不在-5~256之间