博客
关于我
python -- 小数据池 is和 == 再谈编码
阅读量:805 次
发布时间: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 Flower库:分布式任务管理与监控
    查看>>
    Python for 循环和迭代器行为
    查看>>
    Python For循环多次返回
    查看>>
    python frame_python3 selenium自动化 frame表单嵌套的切换方法
    查看>>
    Python ftplib - 指定端口
    查看>>
    Python furl库:一键搞定复杂URL操作
    查看>>
    Python GC 也会关闭文件吗?
    查看>>
    python gen_key.py 报错 提示找不到OpenSSL lib
    查看>>
    python getattrribute_Python学习——面向对象高级之反射
    查看>>
    Python进阶语法:字典推导式
    查看>>
    python gil_Python中GIL的使用详解
    查看>>
    python glob.glob使用
    查看>>
    python glob的安装和使用
    查看>>
    Python google drive API 下载,文件在哪里?
    查看>>
    Python GPS 模块:读取最新的 GPS 数据
    查看>>
    python grpc入门
    查看>>
    python gRPC测试helloworld
    查看>>
    python gRPC简单示例
    查看>>
    Python GUI 开发:全面指南
    查看>>
    Python GUI编程
    查看>>