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中的“字符串”和“字符串”有啥区别吗? [复制]
python中的range和xrange有啥区别? [复制]
python中的p = 和p:dict = 有啥区别? [复制]