python中的b''和''有啥区别? [复制]

Posted

技术标签:

【中文标题】python中的b\'\'和\'\'有啥区别? [复制]【英文标题】:What is the difference between b'' and '' in python? [duplicate]python中的b''和''有什么区别? [复制] 【发布时间】:2016-02-16 01:31:15 【问题描述】:

我是 python 新手,我对 b'''' 的区别有点困惑。

我认为它们都是空的,但 b'' == '' 返回 False。但为什么?有人可以用 memory 向我解释一下吗?

它们在内存中的内容是否相同,而在类型上是否不同,从而导致不平等?

【问题讨论】:

【参考方案1】:

b"" 创建一个 bytes 对象,而 "" 创建一个 str 对象。引用documentation:

字节文字总是以'b''B' 为前缀;他们产生一个 bytes 类型的实例,而不是 str 类型。他们可能只 包含 ASCII 字符;数值为 128 或更大的字节 必须用转义符表示。

在 Python3 中,不同类型的对象(不同的数值类型除外)永远不会比较相等。

顺便说一句,对象的内存大小也不同:

>>> from sys import getsizeof 
>>> getsizeof(b"")
33
>>> getsizeof("")
49

【讨论】:

【参考方案2】:

(这是针对 python3 的):您的示例之一是 bytes 类型;另一个str。他们永远不会被认为是平等的。

print(type(b'')) # -> <class 'bytes'>
print(type(''))  # -> <class 'str'>

【讨论】:

【参考方案3】:

在python2中基本没有区别。在python3中,第一个是字节串或字节字面量,第二个是普通字符串。

【讨论】:

以上是关于python中的b''和''有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python中的[None]和[]有啥区别? [复制]

Python中的“字符串”和“字符串”有啥区别吗? [复制]

python中的range和xrange有啥区别? [复制]

python中的p = 和p:dict = 有啥区别? [复制]

在 C++ 中。 (*a).b 和 a->b 有啥区别? [复制]

python中的构造函数和初始化程序有啥区别? [复制]