13

Python 3.2では、オブジェクトのタイプを簡単に変更できます。例えば ​​:

x=0
print(type (x))
x=bytes(0)
print(type (x))

それは私にこれを与えるでしょう:

<class 'int'>
<class 'bytes'>

しかし、Python 2.7では、同じ方法でそれを行うことはできないようです。私が同じコードを実行すると、これが得られます:

<type 'int'>
<type 'str'>

タイプをバイトタイプに変更するにはどうすればよいですか?

4

5 に答える 5

16

タイプを変更しているのではなく、変数に別の値を割り当てています。

また、python 2.x と 3.x の根本的な違いの 1 つにも触れています。大幅に簡素化された 2.x タイプは、タイプ自体が に変更されunicodeたタイプに置き換えられました。Python 2 の最近のバージョンでは、両方のバージョンで動作するコードを簡単に記述できるようにエイリアスとして追加されているため、コードで動作することがあります。strbytesbytesstr

つまり、コードは期待どおりに機能しています。

于 2012-05-30T10:30:42.167 に答える
8

型をバイト型に変更するにはどうすればよいですか?

できません。Python 2.7 には「bytes」などの型はありません。

Python 2.7 のドキュメント (5.6 シーケンス タイプ) から:

Python 3.2 ドキュメント (5.6 シーケンス タイプ) から: 「文字列、バイト シーケンス (bytes オブジェクト)、バイト配列 (bytearray オブジェクト)、リスト、タプル、範囲オブジェクトの 6 つのシーケンス タイプがあります。

于 2012-05-30T10:53:47.113 に答える
4

Python 2.x では、bytesは単なるエイリアスであるためstr、すべてが期待どおりに機能します。さらに、ここではオブジェクトのタイプを変更していません。名前xを別のオブジェクトに再バインドしているだけです。

于 2012-05-30T10:31:53.837 に答える