python中b''和''有什么区别?

时间:2015-11-14 15:45:02

标签: python python-3.x

我是一个蟒蛇新手,我对b''''的区别感到有些困惑。

我认为它们都是空的,b'' == ''会返回False。但为什么?有人可以用记忆来解释这个吗?

内存中的内容是否相同,类型不同导致不平等?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

  

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

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

BTW,对象的内存大小也不同:

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

答案 2 :(得分:0)

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