06 day小数据池
1.小数据池,id()
小数据池针对的是: int ,str,bool-----都是不可变的数据类型
a.int 类型
a = 1000 b = 1000 print(id(a), id(b)) # 165830000 165830000 b. 字符串,如果单纯的鞋字符串,几乎都会被缓存 s1 = "alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事" # s2 = "alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事" # print(id(s1), id(s2)) # 31222064 31222064 在py文件中几乎所有的字符串都会缓存,在cmd黑窗口里的几乎都不会缓存,不同的解释器,缓存的机制也不一样 优点:可以帮我们快速的创建对象. 节省内存 缺点: 缓存如果过大.响应速度会比较慢 id()函数可以帮我们查看一个变量的内存地址 a = 10 b = 30 print(id(a)) # 1515545088 print(id(b)) # 1515545728 两个对象值一样,但是对应的内存地址是不一样的 1 = [1,2,3] # 两个对象 内存地址是不一样的 lst2 = [1,2,3] print(id(lst1)) # 166167624 print(id(lst2)) # 166122376 2.is 和==的区别 == 比较的是数据,外贸的 is 比较的是内存地址,比较的内在的,如:比较的身份证号 # lst1 = [1,2,3] # lst2 = [1,2,3] # # 列表没有小数据池 # print(id(lst1), id(lst2)) # 166167560 166126408 # print(lst1 == lst2) # True # print(lst1 is lst2) # False # # s1 = "我叫周润发" # s2 = "我叫周润发" # print(s1 == s2) # print(s1 is s2) # 小数据池 # tu1 = ("周一", "周二") # tu2 = ("周一", "周二") # print(tu1 is tu2) # 地址不相等 False # print(tu1 == tu2) # 内容相等 True 3.再谈编码 encode(编码格式) 编码 decode(编码格式) 解码 s = "我今天非常的困" # 21个utf-8 bs = s.encode("gbk") # 把字符串转化成utf-8格式bytes # bytes不是给人看的. 给机器用的 # 14个字节 gbk b'\xce\xd2\xbd\xf1\xcc\xec\xb7\xc7\xb3\xa3\xb5\xc4\xc0\xa7' # 21个字节 utf-8 b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' print(bs) utf - 8和 gbk是不能直接转换的,必须使用unicode来转换 bs = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' # 把字节转化回字符串 s = bs.decode("utf-8") print(s) b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' 把这个bytes转化成gbk的bytes bs = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' # 解码 s = bs.decode("utf-8") print(s) # 编码 bss = s.encode("gbk") print(bss) 关于bytes,非ascii中的内容,展示的时候都是\x.. 如果是ascii中的内容,原样的输出. name = "alex昨天吃多了" bs = name.encode("gbk") # b'alex\xd7\xf2\xcc\xec\xb3\xd4\xb6\xe0\xc1\xcb' print(bs) bss = name.encode("utf-8") # b'alex\xe6\x98\xa8\xe5\xa4\xa9\xe5\x90\x83\xe5\xa4\x9a\xe4\xba\x86' print(bss)
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
a = 1000 b = 1000 print(id(a), id(b)) # 165830000 165830000 b. 字符串,如果单纯的鞋字符串,几乎都会被缓存 s1 = "alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事" # s2 = "alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事" # print(id(s1), id(s2)) # 31222064 31222064 在py文件中几乎所有的字符串都会缓存,在cmd黑窗口里的几乎都不会缓存,不同的解释器,缓存的机制也不一样 优点:可以帮我们快速的创建对象. 节省内存 缺点: 缓存如果过大.响应速度会比较慢 id()函数可以帮我们查看一个变量的内存地址 a = 10 b = 30 print(id(a)) # 1515545088 print(id(b)) # 1515545728 两个对象值一样,但是对应的内存地址是不一样的 1 = [1,2,3] # 两个对象 内存地址是不一样的 lst2 = [1,2,3] print(id(lst1)) # 166167624 print(id(lst2)) # 166122376 2.is 和==的区别 == 比较的是数据,外贸的 is 比较的是内存地址,比较的内在的,如:比较的身份证号 # lst1 = [1,2,3] # lst2 = [1,2,3] # # 列表没有小数据池 # print(id(lst1), id(lst2)) # 166167560 166126408 # print(lst1 == lst2) # True # print(lst1 is lst2) # False # # s1 = "我叫周润发" # s2 = "我叫周润发" # print(s1 == s2) # print(s1 is s2) # 小数据池 # tu1 = ("周一", "周二") # tu2 = ("周一", "周二") # print(tu1 is tu2) # 地址不相等 False # print(tu1 == tu2) # 内容相等 True 3.再谈编码 encode(编码格式) 编码 decode(编码格式) 解码 s = "我今天非常的困" # 21个utf-8 bs = s.encode("gbk") # 把字符串转化成utf-8格式bytes # bytes不是给人看的. 给机器用的 # 14个字节 gbk b'\xce\xd2\xbd\xf1\xcc\xec\xb7\xc7\xb3\xa3\xb5\xc4\xc0\xa7' # 21个字节 utf-8 b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' print(bs) utf - 8和 gbk是不能直接转换的,必须使用unicode来转换 bs = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' # 把字节转化回字符串 s = bs.decode("utf-8") print(s) b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' 把这个bytes转化成gbk的bytes bs = b'\xe6\x88\x91\xe4\xbb\x8a\xe5\xa4\xa9\xe9\x9d\x9e\xe5\xb8\xb8\xe7\x9a\x84\xe5\x9b\xb0' # 解码 s = bs.decode("utf-8") print(s) # 编码 bss = s.encode("gbk") print(bss) 关于bytes,非ascii中的内容,展示的时候都是\x.. 如果是ascii中的内容,原样的输出. name = "alex昨天吃多了" bs = name.encode("gbk") # b'alex\xd7\xf2\xcc\xec\xb3\xd4\xb6\xe0\xc1\xcb' print(bs) bss = name.encode("utf-8") # b'alex\xe6\x98\xa8\xe5\xa4\xa9\xe5\x90\x83\xe5\xa4\x9a\xe4\xba\x86' print(bss)

更多精彩