Pythonでは,
Python 2.
Python 3000では,
Unicodeベースの文字列型
Python 3000では,
2.
Python 3.
標準の文字列型がUnicodeベースなったことにより,
たとえば,
このようなことを避けるためには,
>>> import codecs
>>> f=codecs.open('foo_euc.txt')
>>> print(f.read('r', 'euc-jp'))
(ファイルの内容を表示)
8ビットデータ列としてのbytes型
エンコードを明示せず,
Python 2.
Python 3.'abc'+b'abc'
のようにしてstr型とbytes型を連結できなくなっています。2つのオブジェクトを連結するためには,
変更可能なbytearray型
Pythonの文字列型はs[2]='c'
のようにして,
Pythonの文字列型は8ビットクリーンなデータをストアできたため,
bytearrayにはリテラルはありません。str型やbytes型を元にして生成します。str型からbytearrayを生成するためには,
>>> ba=bytearray('abcde', 'utf-8')
>>> ba[2]
99
>>> ba[2]=ord('C')
>>> ba
bytearray(b'abCde')
>>> ba[2:4]=b'BCDE'
>>> ba
bytearray(b'abBCDEe')
int型とlong型の統合, 割り算に関する変更
Pythonの仕様変更に関する提案を記載したPEPというものがあります。Pyton 3.
int型はCのlongに依存した数値型です。long型は後付けでPythonに追加された数値型で,
PEP 237が2001年に書かれていることからもわかるとおり,
また,//
という演算子を使います。