前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >45.python bytearray函数

45.python bytearray函数

作者头像
猿说编程[Python和C]
修改2021-04-27 15:19:28
9040
修改2021-04-27 15:19:28
举报
文章被收录于专栏:猿说编程猿说编程

python除了 bytes字节序列 之外,还有bytearray可变的字节序列,具体区别在哪呢?顾名思义,前者是不可变的,而后者是可变的!具体本文会有详细的讲解!

一.bytearray函数简介

# 1.定义空的字节序列bytearray
bytearray() -> empty bytearrayarray
 
# 2.定义指定个数的字节序列bytes,默认以0填充,不能是浮点数
bytearray(int) -> bytes array of size given by the parameter initialized with null bytes
 
# 3.定义指定内容的字节序列bytes
bytearray(bytes_or_buffer) -> mutable copy of bytes_or_buffer
 
# 4.定义指定内容的字节序列bytes
bytearray(string, encoding[, errors]) -> bytearray
 
# 5.定义指定内容的字节序列bytes,只能为int 类型,不能含有float 或者 str等其他类型变量
bytearray(iterable_of_ints) -> bytearray

返回值:返回一个新的可变字节序列,可变字节序列bytearray有一个明显的特征,输出的时候最前面会有一个字符b标识,举个例子:

b'\x64\x65\x66'
b'i love you'
b'shuopython.com'

凡是输出前面带有字符b标识的都是字节序列bytes;

二.bytearray函数使用

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): https://www.codersrc.com/
 
@File:python_bytearray.py
@Time:2020/2/26 21:25
 
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
 
 
if __name__ == "__main__":
 
    # 定义空的字节序列bytearray
    b1 = bytearray()
    print(b1)
    print(type(b1))
    print("***"*20)
 
    # 定义指定个数的字节序列bytes,默认以0填充,不能是浮点数
    b2 = bytearray(10)
    print(b2)
    print(type(b2))
    print("***" * 20)
 
    # 定义指定内容的字节序列bytes
    b3 = bytes('abc', 'utf-8')
    print(b3)
    print(type(b3))
    print("***" * 20)
 
    # 正常输出
    b1 = bytearray([1, 2, 3, 4])
    >> > b'\x01\x02\x03\x04'
 
    # bytes字节序列必须是 0 ~ 255 之间的整数,不能含有float类型
    b1 = bytearray([1.1, 2.2, 3, 4])
    >> > TypeError: an integer is required
 
    # bytes字节序列必须是 0 ~ 255 之间的整数,不能含有str类型
    b1 = bytearray([1, 'a', 2, 3])
    >> > TypeError: an integer is required
 
    # bytes字节序列必须是 0 ~ 255 之间的整数,不能大于或者等于256
    b1 = bytearray([1, 257])
    >> > ValueError: bytes  must be in range(0, 256)

输出结果:

bytearray(b'')
<class 'bytearray'>
************************************************************
bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
<class 'bytearray'>
************************************************************
b'abc'
<class 'bytes'>
************************************************************

三.bytearray与bytes区别

1.相同点:bytearray与bytes取值范围都是 0~256

2.不同点:bytearray可变的字节序列,bytes是不可变的字节序列

A. bytes不可变字节序列
if __name__ == "__main__":
    # bytes不可变字节序列
    b1 = b"abcd"
    for i in b1:
        print(i,end=" ")
    print()
    b1[0] = "A"

输出结果:

97 98 99 100 
Traceback (most recent call last):
  File "E:/Project/python/python_project/untitled10/123.py", line 22, in <module>
    b1[0] = "A"
TypeError: 'bytes' object does not support item assignment
B.bytearray可变字节序列
if __name__ == "__main__":
 
    # bytearray可变字节序列
    b1 = b"abcd"
    b2 = bytearray(b1)
    print("修改之前:",b2)
 
    b2[0] = 65
    print("修改之后:", b2)

输出结果:

修改之前: bytearray(b'abcd')
修改之后: bytearray(b'Abcd')
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.bytearray函数简介
  • 二.bytearray函数使用
  • 三.bytearray与bytes区别
    • 1.相同点:bytearray与bytes取值范围都是 0~256
      • 2.不同点:bytearray可变的字节序列,bytes是不可变的字节序列
        • A. bytes不可变字节序列
        • B.bytearray可变字节序列
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档