Pythonで(そして一般的に)文字列比較は何をしますか? 次のコードがある場合:
def com(a):
if a > 'banana':
print 'yes'
else:
print 'no'
「より大きい」「バナナ」とは何ですか? 「比較」という概念に少し混乱しています。何が比較されていますか?
Pythonで(そして一般的に)文字列比較は何をしますか? 次のコードがある場合:
def com(a):
if a > 'banana':
print 'yes'
else:
print 'no'
「より大きい」「バナナ」とは何ですか? 「比較」という概念に少し混乱しています。何が比較されていますか?
辞書式文字列比較を行います。
a > b
次のように解決されます。
a.__gt__(b)
この場合aは typestrであるため、実際にはバインドされたインスタンスとしてstr.__gt__(b)withを呼び出します。a「gt」は「より大きい」を表します。
x.__gt__(y)が関数で定義された値よりも大きいTrue場合に返します。が定義されていない場合は、使用にフォールバックします。比較結果に応じて -1、0、1 を返します。の型に が定義されていない場合、構文エラーが発生します。xygta.__cmp__(b)__cmp__a
strには__gt__メソッドがあるため、 の解決に使用されa > bます。このメソッドは、任意のカスタム オブジェクトに提供できます。
リッチ比較に関するドキュメントlt, le, eq, ne, gt, geと も参照してくださいcmp。