【发布时间】:2016-02-16 01:31:15
【问题描述】:
我是 python 新手,我对 b'' 和 '' 的区别有点困惑。
我认为它们都是空的,但 b'' == '' 返回 False。但为什么?有人可以用 memory 向我解释一下吗?
它们在内存中的内容是否相同,而在类型上是否不同,从而导致不平等?
【问题讨论】:
标签: python python-3.x
我是 python 新手,我对 b'' 和 '' 的区别有点困惑。
我认为它们都是空的,但 b'' == '' 返回 False。但为什么?有人可以用 memory 向我解释一下吗?
它们在内存中的内容是否相同,而在类型上是否不同,从而导致不平等?
【问题讨论】:
标签: python python-3.x
b"" 创建一个 bytes 对象,而 "" 创建一个 str 对象。引用documentation:
字节文字总是以
'b'或'B'为前缀;他们产生一个bytes类型的实例,而不是str类型。他们可能只 包含 ASCII 字符;数值为 128 或更大的字节 必须用转义符表示。
在 Python3 中,不同类型的对象(不同的数值类型除外)永远不会比较相等。
顺便说一句,对象的内存大小也不同:
>>> from sys import getsizeof
>>> getsizeof(b"")
33
>>> getsizeof("")
49
【讨论】:
(这是针对 python3 的):您的示例之一是 bytes 类型;另一个str。他们永远不会被认为是平等的。
print(type(b'')) # -> <class 'bytes'>
print(type('')) # -> <class 'str'>
【讨论】:
在python2中基本没有区别。在python3中,第一个是字节串或字节字面量,第二个是普通字符串。
【讨论】: