今まで読んだ内容よりも正確にできるように最善を尽くします。(少し修正版)
Python 表記b'string'
は、それをサポートする Python バージョンのバイト文字列リテラルを示します。この表記法は、Unicode サポートへの移行に向けたステップとして、Python 2 のPEP 358で導入されました。2.6b
の現在のPython 構文はプレフィックスについて言及していませんが、2.7b
のPython 構文ではプレフィックスについて言及しています。ただし、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 では、これはバイト リテラルを示します: はい、少なくともバージョン 2.6 以降の Python 2 でも同様です。
- この表記法は Python 2 では無視されます:すでにそれをサポートしている Python 2 バージョンを持っていて、あなた (またはあなたが見ている外国のコード) をインポートしない限り、そしてあなたが Python 2 との互換性を気にしない場合にのみ、それは効果がありません。 Python 3 (誰もが考慮する必要があり、多くの場合、サード パーティ製ソフトウェアで対象とされています)。
__future__
私の見解では、OPの質問に対する最短の有効な答えは次のようになります。
これは文字列リテラルのプレフィックスであり、Python 2.6 で導入された Unicode 表現ではなくバイト表現を強制し、Python 2 の Python のデフォルトを変更しませんfrom __future__ import
(ただし、見られる場合は注意が必要です)。