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

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

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

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

【问题讨论】:

    标签: python python-3.x


    【解决方案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中,第一个是字节串或字节字面量,第二个是普通字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-25
          • 2019-01-19
          • 2021-10-10
          • 2020-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-08
          相关资源
          最近更新 更多