2017-11-19 5 views
4

は、それが正しいのpython3からpython2を区別するためにPython "str is bytes"はsys.version_info testと同等ですか?

if str is bytes: ... 

代わり

if sys.version_info < (3,): ... 

の使用ですか?特に、strがunicodeでない可能性があるために、バージョン依存コードが必要な場合、前者は時にはもっとわかりやすいように見えますが、しばしば無関係のimport sysを避けていますが、このテストを使用するPythonコードは見たことがありません。 "str is bytes"はバージョン2のCPythonの変種としてのみtrueか、それともすべてのpython2で保証されていますか?

+5

あなたと私は、 "明確になる"ための定義が大きく異なります。 – Mephy

+1

["Python 2.6は' str'型の同義語として 'bytes'を追加しました](https://docs.python.org/3/whatsnew/2.6.html#pep-3112-byte-literals)。つまり、実装の詳細だけではないようです。それはまだ非常に混乱しています。 Pythonのインポートは安く、私はそれについて心配しません。 –

+0

@PatrickHaugh: 'str is bytes'は> = 2.6でしか動かないので、これは同等ではないことが歴史上の示唆であり、python _2_とPython 3との区別について質問しました。 ;-) – DSM

答えて

3

sys.version_info < (3,)を使用して、あなたがpython2のケースを特定しようとしていることを読者に伝えてください。

関連する問題