2016-07-19 4 views
0

私はPythonを学んでいます。次のコードでinit()のcontents.encode()について少し混乱しています。Python3とASCII

PY3 = sys.version_info[0] > 2 


class Test: 
    def __init__(self): 
     self.contents = '' 
     if PY3: 
      self.contents = self.contents.encode('ascii') 
+0

正確にはあなたを混乱させるのはどうですか? – jwodder

答えて

1

Python 3文字列はUnicode文字列です。データをバイト文字列にしたい場合があります。通常、各文字は1バイトです。 "string".encode('ascii')は、これらの文字をUnicodeとして含むUnicode文字列のうち、6つのASCII文字s、t、r、i、n、gを含むバイト文字列を作成します。

これは移植性の調整です。 Python 2の文字列はバイト文字列でした(Unicode文字列を作成するための表記はu"string"ですが、Python 2.5 IIRCから始まります)。