Python细节(二)小数据池
3.8小数据池
python是由代码块构成的
代码块,一个模块.一个函数,一个类,一个文件,eval(),exec()执行的时候也是一个代码块
1.内存地址 id()
通过id() 我们可以查看到一个变量表示的值在内存中的地址
a = 'alex'
print(id(a)) #4541631158
-
== 和is
==比较的是值(内容) True
is比较的是内存地址(是不是同一个对象) False
lst1 = [1,2,3]
lst2 = [1,2,3]
pritn(lst1 == lst2) #True 长得一样
print(lst1 is lst2) #False 不是同一个对象
3.小数据池 数字(-5-256)之间的整数会被缓存
lst1 = 'alex'
lst2 = 'alex'
pritn(lst1 == lst2)
print(lst1 is lst2) #在python中默认会把整数,布尔值,字符串进行缓存
缓存规则
- 如果字符串的⻓度是0或者1, 都会默认进⾏缓存
- 字符串⻓度⼤于1, 但是字符串中只包含字⺟, 数字, 下划线时才会缓存
- ⽤乘法的到的字符串. ①. 乘数为1, 仅包含数字, 字⺟, 下划线时会被缓存. 如果
包含其他字符, ⽽⻓度<=1 也会被驻存, ②. 乘数⼤于1 . 仅包含数字, 字⺟, 下线这个时候会被缓存. 但字符串⻓度不能⼤于20 - 指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容.
- 特殊字符(中文除外)定义一个的时候进行驻留
手动缓存,需要调用工具
from sys import intern
代码块的规则
#数字:全部驻留
#字符串:1.做乘法的时候,总长度不能超过20.
# 2.自己定义的都驻留
# 3.乘数为1的时候就是赋值
# 4.python3.7乘法的时候总长度不能超过4096
需要记住:小数池支持数字字符布尔值
数字 -5 - 256
字符串乘法时长度不能超过20
当你的才华还撑不起你的野心的时候,你就应该静下心来学习; 当你的能力还驾驭不了你的目标时,就应该沉下心来历练。