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 を返します。の型に が定義されていない場合、構文エラーが発生します。x
y
gt
a.__cmp__(b)
__cmp__
a
str
には__gt__
メソッドがあるため、 の解決に使用されa > b
ます。このメソッドは、任意のカスタム オブジェクトに提供できます。
リッチ比較に関するドキュメントlt, le, eq, ne, gt, ge
と も参照してくださいcmp
。