gpt4 book ai didi

Python 字符串 "b"前缀(字节文字)

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:58 24 4
gpt4 key购买 nike

我正在查看一些单元测试代码,我发现了这个:

self.assertIn(b'Hello', res.body)

我知道这意味着 bytes在 Python 3 中 returns a byte array ,正如我发现的那样 here .我相信该代码是为 Python 3.3 编写的,并且我试图弄清楚它在其他版本(在我的例子中是 2.7)中是如何工作的 related question我发现有一个被接受的答案写得不好,里面有矛盾的评论,这让我很困惑。

问题:

  • b'myString' 在什么版本的 python 中“工作”?
  • 它在 python 2.x 中的表现如何?
  • 它在 python 3.x 中的表现如何?
  • 这与 byte literal change 有关系吗? ?

最佳答案

这一切都在您链接的文档中进行了描述。

  • b'myString' 在什么版本的 python 中“工作”?:2.6+。
  • 它在 python 2.x 中的表现如何? 它创建一个 bytes 字面量——这与 2.x 中的 str 字面量完全相同。
  • 它在 python 3.x 中的表现如何? 它创建一个 bytes 字面量——与 3.x 中的 str 字面量相同。
  • 这与字节字面量的变化有关吗? 是的。这就是重点;它让您可以编写“ future 兼容”的代码——或者无需 2to3 即可在 2.6+ 和 3.0+ 中运行的代码。

引用您链接部分的第一段:

For future compatibility, Python 2.6 adds bytes as a synonym for the str type, and it also supports the b'' notation.

请注意,正如下面几行所说,Python 2.x bytes/str 与 Python 3.x bytes 的类型不完全相同:“最值得注意的是,构造函数完全不同”。但是字节文字是相同的,除了在将 Unicode 字符放入字节文字的边缘情况下(它在 2.x 中没有定义的含义,但有时会做一些随意的事情,这可能恰好是你所希望的,而在 3.x 中它是有保证的 SyntaxError)。

关于Python 字符串 "b"前缀(字节文字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17707085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com