【Python3】ord()は長さ1の文字列を予期していましたが、intが見つかりました



Python3 Ord Expected String Length 1



int

OK、cはord()タイプですが、# codingstatemachine.py def next_state(self, c): # for each byte we get its class # if it is first byte, we also get byte length byteCls = self._mModel['classTable'][ord(c)]長さ1の文字列が必要です。それでおしまい。 cはどこで定義されていますか?

next_state()

ここではありませんcは# utf8prober.py def feed(self, aBuf): for c in aBuf: codingState = self._mCodingSM.next_state(c) functionに渡されます。もう一度見てみましょう。



int

見えますか? Python 2では、aBufは文字列であるため、cは長さ1の文字列です(文字列をトラバースすると、すべての文字が一度に1つずつ取得されます)。aBufはバイト配列になっているため、cは|になります。 _ + _ |タイプ。長さ1の文字列ではありません。つまり、cはすでにord()であるため、int関数を呼び出す必要はありません。