小学生都能学会的python(小数据池)

1. 小数据池.
目的:缓存我们字符串,整数,布尔值。在使用的时候不需要创建过多的对象
缓存:int, str, bool、
int: 缓存范围 -5~256
str:
1. 长度小于等于1,直接缓存
2. 长度大于1. 字符串中如果只有数字, 字母, 下划线。 就会缓存
3. 乘以1。 同上, 乘以大于1的数。仅包含数字,字母下划线。最终长度小于20会缓存
4. 使用sys模块中的intern()缓存字符串
代码块的关系:如果在同一个代码块中。默认的整数和字符串还有布尔值都会进行缓存. 如果涉及计算。尊崇上面的规则
如果跨代码块,按照上面的规则执行的

# a = [1,2,2,13,123,123,12,3,12,3,12,312,3,12,32,13,12,3,21]
# b = a # 明天深浅拷贝

# 内存地址 id()
# print(id(a))
# print(id(b))

# a = 1000
# print(id(a))  # 内存的开辟是由解释器来完成的.

# 双胞胎
# == 比较的是值(内容)  True
# is 比较的是内存地址(是不是同一个对象) False

# lst1 = [1,2,3]
# lst2 = [1,2,3]
# print(lst1 == lst2) # 长得一样
# print(lst1 is lst2) # 不是同一个对象

# a = "alex"
# b = "alex"
# print(a == b)
# print(a is b)  在python中, 默认会把数字, 字符串, 布尔值进行缓存

# 1.当我们在控制台的时候, 代码块与代码块之间的规则:
#     1. 数字:  -5 ~ 256之间的整数会被缓存
#     2. 字符串:
#         长度小于等于1 会默认缓存
#         长度大于1 如果字符串中只有数字, 字母下换线缓存
#         乘法得到的字符串:
#             1. 如果乘数是1. 和上面两个方案一致
#             2. 乘数不是1. 最终长度不能超过20
#         手动指定缓存  from sys import intern intern()制定缓存的内容
#      3. 布尔值
# 2. py文件里. 一个代码块内部. 只会缓存int, str, bool 也有自己的小数据池。 缓存的范围会比外面的代码块的数据池要大
#       1. 数字。都会缓存。 运算的结果不缓存(-5~256 会缓存)
#       2. 字符串。 默认的字符串都缓存. 如果有乘法。 遵循上方的结论
#       3. 布尔值。 默认缓存

a = "[email protected]" # 5
b = "[email protected]" # 1

  

2. is和==的区别
is比较的是内存地址
==比较的是值
3. decode和encode
python3内存中使用的是unicode。
unicode => utf-8 encode("utf-8")
utf-8 => unicode decode("utf-8")
utf-8和gbk不能直接转换
bytes是字符串的另一种表示形式

再谈编码

‘‘‘
1. ASCII: 8bit 1byte 英文字母 数字 特殊字符.
2. GBK: 16bit 2byte 主要是存中文。日文, 韩文, 繁字体。 中文的特殊字符  中国 (abcd)
3. UNICODE: 32bit 4byte
4. UTF-8: 可变长度的unicode
    英文: 8bit, 1byte
    欧洲文字:16bit, 2byte
    中文: 24bit, 3byte  (abcd)
GBK和UTF-8不能直接互换
转码
‘‘‘
# 在python2里面. 默认的编码是ASCII
# 在python3中unicode是可以使用的。 默认用的就是Unicode. 代码用utf-8来存储

#  如果用unicode存储, 如果用utf-8
# s = "你好啊"   # 看到的就是unicode
# print(s)

# 1. 编码. 把unicode转换成utf-8
# s = "刘伟很皮" # 12个字节
# abc = s.encode("UTF-8")  # encode之后的结果是bytes类型  依然是原来的字符串
# print(abc)  # b‘数据‘

# 解码
# abc = b‘\xe5\x88\x98\xe4\xbc\x9f\xe5\xbe\x88\xe7\x9a\xaf‘
# s = abc.decode("UTF-8") # 解码。 用什么编码, 就用什么解码
# print(s)

# s = "赵瑞鑫"
# print(s.encode("GBK"))
# bs = b‘\xd5\xd4\xc8\xf0\xf6\xce‘
# print(bs.decode("GBK")) # GBK的编码不能用UTF-8解码

# GBK的编码. 把这句话变成UTF-8
# bs = b‘\xd5\xd4\xc8\xf0\xf6\xce‘
# # 先解码
# s = bs.decode("GBK")
# # 重新编码
# bs2 = s.encode("UTF-8")
# print(bs2)

  

原文地址:https://www.cnblogs.com/konghui/p/9670162.html

时间: 2024-07-31 23:01:16

小学生都能学会的python(小数据池)的相关文章

小学生都能学会的python(<lamda匿名函数,sorted(),filter(),map(),递归函数>)

小学生都能学会的python(<<lamda匿名函数,sorted(),filter(),map(),递归函数,二分法>> 1. lambda 匿名函数 lambda 参数: 返回值 注意: 1. 函数的参数可以有多个. 多个参数之间?逗号隔开2. 匿名函数不管多复杂. 只能写??, 且逻辑结束后直接返回数据3. 返回值和正常的函数?样, 可以是任意数据类型 # def fang(x): # return x**2 # # # ret = fang(5) # # print(ret

Python 小数据池、代码块以及代码块缓存机制

按照惯例,吟诗一首:苏轼<江城子·乙卯正月二十日夜记梦> 十年生死两茫茫,不思量,自难忘.千里孤坟,无处话凄凉. 纵使相逢应不识,尘满面,鬓如霜. 夜来幽梦忽还乡,小轩窗,正梳妆.相顾无言,惟有泪千行. 料得年年肠断处,明月夜,短松冈. 1. is 和 == 之间的区别 在讲解代码块及其缓存机制之前有必要搞清楚is和==之间的区别 开门见山直接说:==是比较两边变量的值是否相同,is是比较两边变量的内存地址是否相同,在python中内存地址如何获取,当然是使用id(item)函数获取了 举两个

python小数据池、代码块

一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是一个代码块. 什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块. 不同的代码块: def func(): print(333) class A: name = 'alex' 虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块. for i

python 小数据池、代码块详解

首先我们来看看下面的问题,第一次遇到还以为见鬼了.                    看到上面这么多种情况刚开始直接就懵逼了.100ID一样,1000就不一样.终端运行情况居然会和pycharm不一样. 后面终于搞懂了,原来这里头有大学问,且看下面分析. 一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是一个代码块. 也就是说:       所

Python小数据池,代码块解析

一.id,is,== 在Python中,id是什么?id是内存地址,比如你利用id()内置函数查询一个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那么is又是什么?==又是什么? == 是比较两边的数值是否相等,而is是比较两边的内存地址是否相等.如果内存地址相等,那么这两边其实是指向同一个内存地址. 可以说如果内存地址相同,那么值肯定相同,但是如果值相同,内存地址不一定相同. 二.代码块 根据官网提示我们可以获知: 根据提示我们从官

python小数据池,代码块深入剖析

小数据池 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建更多的对象 缓存:int,str,bool int:缓存范围-5~256 str:    1.长度小于等于1,直接缓存 2.长度大于1.字符串中如果只有数字,字母,下划线,就会缓存 3.乘于1.同上,乘于大于1的数.仅包含数字,字母,下划线,最终长度小于20会缓存 4.使用sys模块中的intern()缓存字符串 代码块的关系:如果在同一个代码块中,默认的整数和字符串还有布尔值都会进行缓存,如果涉及计算,尊崇上面的规则, 如果跨

Python小数据池(转)

一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那

五.python小数据池,代码块的最详细、深入剖析

一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那么 is 是什么? == 又是什么? == 是比较的两边的数值是否

python小数据池,代码块的最详细、深入剖析

一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加在到内存中,那么这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,那么你可以利用id()去获取这个数据的内存地址: name = '太白' print(id(name)) # 1585831283968 那么 is 是什么? == 又是什么? == 是比较的两边的数值是否