Python内置函数---bytes()

        用于创建不可变的字节序列对象

 1. 基本语法与参数

bytes(source=b'', encoding=None, errors=None)

        - 参数:

        - `source`:可选参数,指定初始化数据来源,可以是以下类型:

        - 整数:创建指定长度的空字节序列(默认填充`\x00`)。

       - 字符串:需配合`encoding`参数(如`utf-8`)转换为字节序列。

       - 可迭代对象:包含0-255范围内整数的列表、元组等。

       - 缓冲区对象(如`bytearray`):复制其内容。

       - `encoding`:字符串编码方式(仅当`source`为字符串时有效)。

       - `errors`:编码错误处理策略(如`strict`、`ignore`)。

       - 返回值:不可变的字节序列对象(`bytes`类型)。

示例:

 #创建空字节序列

b1 = bytes() b''

 #从整数创建(长度为5,初始化为0)

b2 = bytes(5) b'\x00\x00\x00\x00\x00'

# 从可迭代对象创建

b3 = bytes(72, 101, 108, 108, 111) b'Hello'

 #从字符串创建(需编码)

b4 = bytes("你好", "utf-8") b'\xe4\xbd\xa0\xe5\xa5\xbd'

 2. 核心特性

 (1) 不可变性

        与`bytearray`不同,`bytes`对象一旦创建无法修改:

b = bytes(65, 66, 67)

try:

    b0 = 68 触发TypeError

except TypeError as e:

    print(e) 'bytes' object does not support item assignment

 (2) 序列操作

        支持切片、拼接、重复等操作:

b = bytes(97, 98, 99)

b1:3 = b'XY' 替换切片(需长度一致)

print(b) b'axyz'

 3. 常用创建方式

 (1) 空字节序列

empty = bytes() #b''

 (2) 指定长度

fixed_len = bytes(3) #b'\x00\x00\x00'

 (3) 字符串编码

text = "Python"

encoded = bytes(text, "utf-8")# b'Python'

 (4) 可迭代对象

nums = 65, 66, 67

ba = bytes(nums)# b'ABC'

 4. 典型应用场景

 (1) 二进制数据处理

        直接操作二进制数据(如文件读写、网络协议解析):

 #读取文件二进制内容

with open("image.png", "rb") as f:

    data = bytes(f.read())

 (2) 编码转换

        将字符串转换为二进制格式:

text = "你好"

b = bytes(text, "utf-8") b'\xe4\xbd\xa0\xe5\xa5\xbd'

 (3) 性能优化

        相比`bytearray`,`bytes`的不可变性使其在哈希计算、字典键等场景更高效:

data = bytes(1, 2, 3, 4)

hash_value = hash(data) #快速计算哈希值

 5. 注意事项

1. 编码错误处理  

           字符串转`bytes`时需处理编码错误:

  #非ASCII字符使用ASCII编码会报错

   bytes("中国", "ascii") UnicodeEncodeError

    #使用errors参数忽略错误

   bytes("中国", "ascii", errors="ignore") b''

2. 不可变性限制  

   修改操作需重新创建新对象:

   b = b'abc'

   new_b = b:2 + b'X' #创建新对象b'abX'

3. 与`bytearray`的区别   

         - `bytes`不可变,`bytearray`可变。

         - `bytes`适用于二进制数据存储,`bytearray`适用于动态修改场景。

 6. 实际代码示例

 (1) 文件内容读取

with open("data.bin", "rb") as f:

    content = bytes(f.read())

print(content) 输出文件二进制内容

 (2) 字符串与字节互转

text = "Hello"

 字符串转bytes

b = text.encode("utf-8") b'Hello'

 bytes转字符串

s = b.decode("utf-8") "Hello"

 (3) 自定义协议解析

 #解析自定义二进制协议(头部4字节长度 + 数据)

data = bytes(0, 0, 0, 5, 104, 101, 108, 108, 111)

length = int.from_bytes(data0:4, "big")

payload = data4:4+length

print(payload) b'hello'

总结

        `bytes()`是处理二进制数据的基础工具,其不可变性和高效性使其在文件操作、网络通信及加密算法中广泛应用。通过灵活运用构造方法、编码转换及序列操作,开发者能高效实现复杂的数据处理逻辑。

你可能感兴趣的:(Python内置函数,学习,笔记,Python,python)