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

What is the difference between b'' and '' in python?

本问题已经有最佳答案,请猛点这里访问。

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

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

它们在记忆内容方面是相同的,在导致不平等的类型方面是不同的吗?


b""创建bytes对象,""创建str对象。引用文档:

Bytes literals are always prefixed with 'b' or 'B'; they produce an
instance of the bytes type instead of the str type. They may only
contain ASCII characters; bytes with a numeric value of 128 or greater
must be expressed with escapes.

在python3中,不同类型的对象(不同的数字类型除外)之间的比较从不相等。

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

1
2
3
4
5
>>> from sys import getsizeof
>>> getsizeof(b"")
33
>>> getsizeof("")
49

(这是给python3的):你的一个例子是bytes型,另一个是str型。他们永远不会被认为是平等的。

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


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