博客
关于我
python -- 小数据池 is和 == 再谈编码
阅读量:803 次
发布时间:2023-03-05

本文共 1059 字,大约阅读时间需要 3 分钟。

Python程序的执行单元是代码块,包括模块、函数、类甚至命令行命令。代码块也可以是文件或通过eval()exec()执行的内容。在命令行中输入python进入的是Python的命令模式,每条命令都可以视为一个代码块。

小数据池(String Iterning)

小数据池是一种数据缓存机制,类似于常量池。它只存储以下不可变数据类型:整数(int)、字符串(str)和布尔值(bool)。几乎所有的字符在Python文件中都会被缓存。

小数据池的规则:

  • 0到1个字符的字符串都会被缓存。
  • 长度大于1且仅包含数字、字母或下划线的字符串会被缓存。
  • 乘法字符串:乘数为1且仅包含数字、字母或下划线的字符串会被缓存;乘数大于1且长度不超过20且仅包含上述字符的字符串也会被缓存。
  • 手动指定缓存内容:可以通过sys.intern()函数定制小数据池的内容。
  • is与 ==

    • ==:检查两个对象的值是否相等,比较的是内容。
    • is:检查两个对象的内存地址是否相同,只有当两个变量指向同一个对象时才返回True

    例如:

    a = 123b = 123print(id(a))  # 输出内存地址print(id(b))  # 输出不同的内存地址print(a is b)  # 输出True,因为两个变量指向同一个整数对象

    编码补充

    编码是将字符转换为字节的过程,常用编码格式有:

  • ASCII:8位,支持英文字母、数字和部分特殊字符。
  • GBK:16位,支持中文、日文、韩文等多字母语言。
  • Unicode:32位,支持所有语言的全面表示。
  • UTF-8:可变长度,广泛应用于国际化文本。
  • 在Python中,默认编码为Unicode,字符串是Unicode字符串。对于文件操作,默认编码为ASCII。在处理多语言文本时,需先转换为Unicode再进行编码和解码。

    使用编码工具:

    • encode():将字符串编码为指定格式。
    • decode():将字节数据解码为字符串。

    注意事项:

    • 不同编码格式之间不能直接转换,需通过Unicode转换。
    • UTF-8和GBK等编码格式转换需先转为Unicode再转换。

    例如:

    m = '今天晚上想看什么书!'a = m.encode('gbk')  # 返回GBK编码后的字节串b = m.encode('utf-8')  # 返回UTF-8编码后的字节串

    通过小数据池优化内存使用,避免重复创建字符串对象,提升性能。同时,理解is==的区别,正确选择使用场景。编码与解码也是保证数据正确传输的重要环节。

    转载地址:http://ssafk.baihongyu.com/

    你可能感兴趣的文章
    python os文件/目录
    查看>>
    Python Package 之 Faker(随机姓名、电话)
    查看>>
    python运算符优先级
    查看>>
    Python Panda TIME 系列重新采样
    查看>>
    python pandas TimeStamps到夏令时的本地时间字符串
    查看>>
    Python pandas 数据清洗与数据绘图实战
    查看>>
    Python输出信息
    查看>>
    Python Pandas 用顶行替换标题
    查看>>
    Python pandas 通过 dt 访问器有效地将日期时间转换为时间戳
    查看>>
    Python Pandas-从DataFrame按类别绘制多个条形图
    查看>>
    Python Pandas:每月或每周拆分 TimeSerie
    查看>>
    python pandas中融化的对面
    查看>>
    python pandas从时间序列中提取唯一日期
    查看>>
    python pandas库详解_Pandas 库的详解和使用补充
    查看>>
    Python Pandas滚动聚合一列列表
    查看>>
    python pandas相关知识点(练习)
    查看>>
    Python Pandas,从.groupby().Apply()中的GROUP中分割行
    查看>>
    Python pathlib模块详解:优雅处理文件路径
    查看>>
    python Path模块的使用 glob iglob name
    查看>>
    python pickle 模块的使用
    查看>>