登录
首页 >  文章 >  python教程

Pythonbytes与bytearray区别解析

时间:2026-04-30 18:44:36 138浏览 收藏

Python中的bytes和bytearray是处理二进制数据的两大核心类型,二者虽都存储0–255范围内的字节,却在可变性上截然不同:bytes不可变、轻量高效、支持b''字面量且可哈希,适合只读场景;bytearray则灵活可变,支持索引赋值、追加、删除等原地操作,专为需频繁修改二进制数据的任务而生——掌握它们的区别与适用时机,能让你在文件处理、网络编程、加密解密等实际开发中更精准、高效地驾驭底层字节。

python中bytes和bytearray的介绍

在Python中,bytesbytearray 是两种用于处理二进制数据的内置类型。它们都存储字节(0 到 255 之间的整数),但在可变性上有关键区别。

bytes:不可变的字节序列

bytes 类型表示一个不可变的字节序列。一旦创建,就不能修改其中的内容。这类似于字符串(str)——你不能更改某个位置的字节。

常见创建方式:

  • 使用字面量:b'hello'
  • 通过 bytes() 构造函数:bytes([104, 101, 108, 108, 111])
  • 将字符串编码:bytes('hello', 'utf-8')'hello'.encode('utf-8')

操作示例:

x = b'hello'
print(x[0])  # 输出: 104 (字符 'h' 的 ASCII 值)
# x[0] = 72  # 错误!bytes 不支持 item 赋值

bytearray:可变的字节序列

bytearray 与 bytes 类似,但它是可变的。你可以修改、添加或删除其中的字节。这使得它在需要频繁修改二进制数据时非常有用。

创建方式与 bytes 类似,只是使用 bytearray()

  • bytearray(b'hello')
  • bytearray([104, 101, 108, 108, 111])
  • bytearray('hello', 'utf-8')

可变性示例:

y = bytearray(b'hello')
y[0] = 72  # 修改第一个字节为 'H' (ASCII 72)
print(y)   # 输出: bytearray(b'Hello')
y.append(33)  # 添加感叹号
print(y)   # 输出: bytearray(b'Hello!')

主要区别总结

  • 可变性:bytes 不可变,bytearray 可变
  • 性能:bytes 更轻量,适合只读场景;bytearray 支持原地修改
  • 哈希性:bytes 可以用作字典键或集合元素(因为不可变),bytearray 不行
  • 语法字面量:只有 bytes 有字面量写法(b''),bytearray 必须通过构造函数创建

基本上就这些。根据是否需要修改数据,选择 bytes 或 bytearray 即可。

本篇关于《Pythonbytes与bytearray区别解析》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>