誰かが以下のコードについてアイデアを持っていますか?
>>> memoryview("abc") < memoryview("bca")
True
>>> memoryview("abc") > memoryview("bca")
True
>>> memoryview("abc") = memoryview("bca")
False
文字列のコピーを取得するために使用せずに、memoryviewオブジェクトの文字列を比較するにはどうすればよいtobytes
ですか?
誰かが以下のコードについてアイデアを持っていますか?
>>> memoryview("abc") < memoryview("bca")
True
>>> memoryview("abc") > memoryview("bca")
True
>>> memoryview("abc") = memoryview("bca")
False
文字列のコピーを取得するために使用せずに、memoryviewオブジェクトの文字列を比較するにはどうすればよいtobytes
ですか?
memoryview()
オブジェクトは順序付けを定義しません。オブジェクト__lt__
とメソッドは、順序付けをサポートしていないことを示すシングルトンを__gt__
返します。NotImplemented
>>> memoryview("abc").__lt__(memoryview('bca'))
NotImplemented
>>> memoryview("abc").__gt__(memoryview('bca'))
NotImplemented
したがって、Python 2は、内部の一貫した順序を使用してこれらを並べ替えます。Python 3では、 and演算子TypeError
を使用しようとすると、代わりにaが発生します。<
>
Python 2では、オブジェクトが順序付けをサポートしていない場合、オブジェクトは代わりにメモリアドレスで順序付けられます(オブジェクト自体の場合、memoryviewが指している「メモリ」ではありません)。カスタムクラスの順序付けを参照してください:エラーはスローされません。Pythonは何をテストしていますか?何が起こるかの詳細については。
平等および不平等のテストのみがサポートされています。
>>> memoryview("abc").__eq__(memoryview('bca'))
False
>>> memoryview("abc").__eq__(memoryview('abc'))
True
>>> memoryview("abc").__ne__(memoryview('abc'))
False
>>> memoryview("abc").__ne__(memoryview('bca'))
True
唯一のオプションは、.tobytes()
またはを使用すること.tolist()
です。