我会尽力比我目前所读的更精确。(略有修改的版本)
Python 表示法b'string'
表示支持它的 Python 版本中的字节字符串文字。Python 2 的PEP 358引入了该表示法,作为向 unicode 支持迁移的一步。当前2.6 的 Python 语法没有提到b
prefix而2.7 的 Python 语法确实提到了b
prefix。但是,PEP 358 是为 Python 2.6 设计的,我见过的所有 Python 2.6 解释器都接受它。
随着向 Python 3 的迁移,字符串文字的默认值从byte更改为unicode。但是,引入该__future__
模块是为了简化迁移。下面说明了字符串文字的效果。
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 'abc'
'abc'
>>> b'abc'
'abc'
>>> from __future__ import unicode_literals
>>> 'abc'
u'abc'
>>> b'abc'
'abc'
我希望我能激发以下陈述的有效性:
- 在 Python 3 中,这表示一个字节文字:是的,但在 Python 2 中至少从 2.6 版开始也是如此。
- 这个符号在 Python 2 中被忽略:如果你有一个已经支持它的 Python 2 版本并且除非你(或你看到的外部代码)导入
__future__
并且只有当你不关心与Python 3(每个人都应该考虑,并且通常针对第三方软件)。
在我看来,对 OP 问题的最短有效答案是:
这是字符串文字的前缀,强制字节表示而不是 unicode 表示,在 Python 2.6 中引入,不会更改 Python 2 的 Python 默认值from __future__ import
(但如果可以看到,则值得关注)。