专栏首页猿说编程45.python bytearray函数

45.python bytearray函数

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(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.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')

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 44.python bytes函数

    python bytes对于刚接触python的小伙伴来讲,可能还是有点陌生!bytes是字节序列,值得注意的是它有取值范围:0 <= bytes <= 255...

    猿说编程[Python和C]
  • python __name__ == ‘__main__’详细解释

    学习过C语言或者Java语言的盆友应该都知道程序运行必然有主程序入口main函数,而python却不同,即便没有主程序入口,程序一样可以自上而下对代码块依次运行...

    猿说编程[Python和C]
  • 27.python __name__ == ‘__main__’详细解释

    学习过C语言或者Java语言的盆友应该都知道程序运行必然有主程序入口main函数,而python却不同,即便没有主程序入口,程序一样可以自上而下对代码块依次运行...

    猿说编程[Python和C]
  • 开始在ubuntu下工作

    家里的PC机有几个月没用了,昨天刚开机,发现SSD识别不了,经过排查,确定是盘坏了,然后只能重装

    lestat
  • 硅谷初创公司工资期权调查报告出炉,你羡慕吗?

    编辑 | Donna,波波 最近,Triplebyte对美国不同量级科技公司的软件信息工程师进行了一项在线匿名基本工资的调查。除了传统的不同级别员工基本工资比对...

    AI科技大本营
  • Git常用命令

    Spaceack
  • 为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?

    为什么我认为SAP是世界上最好用最牛逼的ERP系统,没有之一?玩过QAD、Tiptop、用友等产品,深深觉得SAP是贵的有道理!       一套好的ERP系...

    SAP梦心
  • 推荐收藏 | Pandas常见的性能优化方法

    Pandas是数据科学和数据竞赛中常见的库,我们使用Pandas可以进行快速读取数据、分析数据、构造特征。但Pandas在使用上有一些技巧和需要注意的地方,如果...

    Sam Gor
  • Git教程-自己为自己总结的一篇教程

    Git:至于它的发音是读作什么,每个人都有着不同的叫法,当然了,我们应该尊重每个人的发音,而不是抱着一种嘲笑的语气,为人善良,为人和善才是我们应该在工作,生活中...

    码农王同学
  • 一个人的企业安全建设之路

    前言 如今很多中小型互联网公司对安全需求不高,安全资源贫乏,领导只重视业务忽略安全,在这种情况下可能安全人员很难立足,推动公司做好安全,从而进入了进退两难的窘境...

    FB客服

扫码关注云+社区

领取腾讯云代金券