首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >44.python bytes函数

44.python bytes函数

作者头像
猿说编程[Python和C]
修改于 2021-04-27 07:22:30
修改于 2021-04-27 07:22:30
1.3K00
代码可运行
举报
文章被收录于专栏:猿说编程猿说编程
运行总次数:0
代码可运行

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

一.bytes函数简介

python bytes字节序列有以下几种使用方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
            bytes(iterable_of_ints) -> bytes
            bytes(string, encoding[, errors]) -> bytes
            bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer
            bytes(int) -> bytes object of size given by the parameter initialized with null bytes
            bytes() -> empty bytes object
 
            Construct an immutable of bytes from:
              - an iterable yielding integers in range(256)
              - a text string encoded using the specified encoding
              - any object implementing the buffer API.
              - an integer
            # (copied from class doc)
"""
 
# 1.定义空的字节序列bytes
bytes() -> empty bytes 
 
# 2.定义指定个数的字节序列bytes,默认以0填充,不能是浮点数
bytes(int) -> bytes of size given by the parameter initialized with null bytes
 
# 3.定义指定内容的字节序列bytes
bytes(iterable_of_ints)
 
# 4.定义字节序列bytes,如果包含中文的时候必须设置编码格式
bytes(string, encoding[, errors]) -> immutable copy of bytes_or_buffer

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b'\x64\x65\x66'
b'i love you'
b'shuopython.com'

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

二.bytes函数使用

1.定义空的字节序列bytes

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): https://www.codersrc.com/
 
@File:python_bytes.py
@Time:2020/2/25 21:25
 
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
 
 
if __name__ == "__main__":
 
    a = bytes()
    print(a)
    print(type(a))

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b''
<class 'bytes'>

2.定义指定个数的字节序列bytes,默认以0填充,不能是浮点数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == "__main__":
 
    b1 = bytes(10)
    print(b1)
    print(type(b1))
 
    # bytes 通过 decode函数转为 str类型
    s1 = b1.decode()
    print("s1:",s1)
    print(type(s1))

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
<class 'bytes'>
s1:           
<class 'str'>

3.定义指定内容的字节序列bytes,只能是整数类型的序列,否则异常

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == "__main__":
 
    # 正常输出
    b1 = bytes([1, 2, 3, 4])
    >>>  b'\x01\x02\x03\x04'
 
    # bytes字节序列必须是 0 ~ 255 之间的整数,不能含有float类型
    b1 = bytes([1.1, 2.2, 3, 4])
    >>>  TypeError: 'float' object cannot be interpreted as an integer
 
    # bytes字节序列必须是 0 ~ 255 之间的整数,不能含有str类型
    b1 = bytes([1, 'a', 2, 3])
    >>>  TypeError: 'str' object cannot be interpreted as an integer
 
    # bytes字节序列必须是 0 ~ 255 之间的整数,不能大于或者等于256
    b1 = bytes([1, 257])
    >>>  ValueError: bytes must be in range(0, 256)

4.定义个字节序列bytes

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == "__main__":
    b1 = bytes('abc', 'utf-8') # 如果包含中文必须设置编码格式
    print(b1)
 
    print("***"*20)
    b2 = bytes(b'def')
    print(b2)
    print(type(b2))
    print(id(b2))
 
    print("***" * 20)
    b3 = b'\x64\x65\x66'
    print(b3)
    print(type(b3))
    print(id(b3))
 
    print("***" * 20)
    # result = True if b2 == b3 else False
    print("b == bb 的结果是 ",(b2 == b3))
    print("b is bb 的结果是 ", (b2 is b3))

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b'abc'
************************************************************
b'def'
<class 'bytes'>
2563018794448
************************************************************
b'def'
<class 'bytes'>
2563018794448
************************************************************
b == bb 的结果是  True
b is bb 的结果是  True

注意:

1.python is和==的区别 文章中有详细介绍:==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较;

2.is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同;

3.如果bytes初始化含有中文的字符串必须设置编码格式,否则报错:TypeError: string argument without an encoding,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b = bytes("猿说python")
 
>>> b = bytes("猿说python")
>>> TypeError: string argument without an encoding

三.重点提醒

1.bytes字节序列的取值范围:必须是0~255之间的整数;

2.bytes字节序列是不可变序列:bytes是不可变序列,即和str类型一样不可修改,如果通过find()、replace()、islower()等函数修改,其实是创建了新的bytes、str对象,可以通过内置函数id()查看值 是否发生变化,示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if __name__ == "__main__":
 
    # 1.通过 replace 生成新的bytes字节序列
    b1 = bytes(b"abcdefg")
    print(b1)
    print(type(b1))
    print(id(b1))
    print("***" * 20)
 
    b2 = bytes.replace(b1,b"cd",b"XY")
    print(b2)
    print(type(b2))
    print(id(b2))
    print("***" * 20)
 
    # 2.bytes 是不可变序列,不能直接修改bytes的内容
    b1[0] = b"ss"
    >>>  TypeError: 'bytes' object does not support item assignment

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b'abcdefg'
<class 'bytes'>
2264724270976
************************************************************
b'abXYefg'
<class 'bytes'>
2264707281104
************************************************************

python除了bytes字节序列之外,还有bytearray可变的字节序列,具体区别在哪呢?我们后续继续讲解;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
45.python bytearray函数
python除了 bytes字节序列 之外,还有bytearray可变的字节序列,具体区别在哪呢?顾名思义,前者是不可变的,而后者是可变的!具体本文会有详细的讲解!
猿说编程[Python和C]
2020/03/12
1.1K0
Python内置数据结构——bytes,bytearray
            bytes.encode(encoding = 'utf - 8',errors = 'stirct') -> bytes
py3study
2020/01/08
1.9K0
47.python bytearray/bytes/string区别
在讲解 bytearray / bytes / string 三者的区别之前,有必要来了解一下字节和字符的区别:
猿说编程[Python和C]
2020/03/12
2.1K0
46.python bytes和string相互转换
1.python bytes 也称字节序列,并非字符。取值范围 0 <= bytes <= 255,输出的时候最前面会有字符b修饰;string 是python中字符串类型;
猿说编程[Python和C]
2020/03/12
7.4K0
str、bytes和bytearray编码
str是字符数据,bytes和bytearray是字节数据。它们都是序列,可以进行迭代遍历。str和bytes是不可变序列,bytearray是可变序列,可以原处修改字节。
狼啸风云
2019/12/10
1.4K0
str、bytes和bytearray编码
49.python str/bytes/unicode区别详解
在讲解 str / bytes /unicode区别之前首先要明白字节和字符的区别,请参考:bytearray/bytes/string区别 中对字节和字符有清晰的讲解,最重要是明白:
猿说编程[Python和C]
2020/03/12
2K0
49.python str/bytes/unicode区别详解
Python 内建函数大全
Python 解释器内置了许多函数和类型,列表如下(按字母排序)(省略了几个我没用过或者不常用的)。
Python数据科学
2018/08/06
2.2K0
Python 内建函数大全
python 基础内置函数表及简单介绍
内建函数名 (表达形式) 主要作用 备注 abs(x) 返回一个X值得绝对值(x=int/float/复数) all(iterable) 如果 iterable 的所有元素均为 True(或 iterable 为空),则返回 True any(iterable) 如果iterable中有任何一个元素为True,则返回True。如果iterable为空,则返回False ascii(object)
Mirror王宇阳
2020/11/10
1.6K0
Python 中的编码与解码
在计算机中,字符串的存储和网络通信都以字节序列(byte sequence)而非Unicode形式进行。Python的编码(encode)和解码(decode)正是用于在字符串(Unicode)和字节序列之间进行转换的核心机制。
timerring
2025/02/10
2690
Python 序列构成的数组
将 python 内置序列类型按照包含对象类型来分类,可以将其分为容器序列和扁平序列。
为为为什么
2022/08/09
8970
Python 序列构成的数组
流畅的 Python 第二版(GPT 重译)(二)
我们在所有的 Python 程序中都使用字典。即使不是直接在我们的代码中,也是间接的,因为dict类型是 Python 实现的基本部分。类和实例属性、模块命名空间和函数关键字参数是内存中由字典表示的核心 Python 构造。__builtins__.__dict__存储所有内置类型、对象和函数。
ApacheCN_飞龙
2024/05/24
5900
流畅的 Python 第二版(GPT 重译)(二)
《流畅的Python》第四章学习笔记
在Windows上使用open打开utf-8编码的txt文件时开头会有一个多余的字符\ufeff,它叫BOM,是用来声明编码等信息的,但python会把它当作文本解析。
zx钟
2020/12/11
6710
《流畅的Python》第四章学习笔记
python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小。 # 如果参数是复数,则返回其大小。 >>> abs(-25) 25 >>> abs(25) 25 all(iterable) all()会循环括号内的每一个元素,如果括号内的所有元素都是真的,或者如果iterable为空,则返回True,如果有一个为假的那么就返回False >>> all([]) True >>> all([1,2,3]) True >>> all([1,2,""]) Fa
程序员同行者
2018/06/22
1K0
解决方案:TypeError: a bytes-like object is required, not 'str'
在Python编程中,我们有时会遇到一个常见的错误:TypeError: a bytes-like object is required, not 'str'。这个错误通常在处理文件、网络传输或加密解密等场景中出现。本文将带您深入了解这个错误的原因,并提供解决方案。
大盘鸡拌面
2023/12/14
3.1K0
内置函数 -- bytes -- 字节码与字符串相互转换
1. 返回值为一个新的不可修改字节数组,每个数字元素都必须在0 - 255范围内,是bytearray函数的具有相同的行为,差别仅仅是返回的字节数组不可修改。
用户7798898
2020/09/27
1.1K0
Python字符与字节新编
它是一个全球化的标准,能表示世界上所有语言的字符。Unicode字符的标识(码位)是以4~6个十六进制数字表示的,并且加前缀U+。
dongfanger
2021/06/17
7850
Python字符与字节新编
Python 字符
“字符串”是个相当简单的概念:一个字符串是一个字符序列。本文记录 Python 中字符串相关内容。 Unicode 标准 从 Python 3 的 str 对象中获取的元素是 Unicode 字符 Unicode 标准把字符的标识和具体的字节表述进行了如下的明确区分。 字符的标识,即码位,是 0~1 114 111 的数字(十进制),在 Unicode 标准中以 4~6 个十六进制数字表示,而且加前缀“U+”。例 如,字母 A 的码位是 U+0041,欧元符号的码位是 U+20AC,高音 谱号的码位是 U
为为为什么
2022/08/10
5680
讲明白python令人头疼的编码问题
在python3里,已经做了区分unicode就是文本,bytes就是原始的字节序列。
哒呵呵
2018/08/06
1.2K0
Hessian 协议极简教程
Hessian支持很多种语言,例如Java,Flash/Flex,python,c++,.net/c#,D,Erlang,PHP,Ruby,Object C等
一个会写诗的程序员
2022/12/21
8500
2017年9月5日
python中可以表示字节的有bytes,bytesarray,memoryview chinese = bytes('englishENG中文', encoding='utf8') print(chinese) # bytes可以通过构造函数传入str获得 # b'englishENG\xe4\xb8\xad\xe6\x96\x87' print(chinese[0]) # 使用索引可以获得range(256)之间的整数 # 101 print(chinese[:1]) # bytes切片还是bytes对
阿章-python小学生
2018/05/18
6820
相关推荐
45.python bytearray函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档