3

Pythonで(そして一般的に)文字列比較は何をしますか? 次のコードがある場合:

def com(a):
    if a > 'banana':
        print 'yes'
    else:
        print 'no'

「より大きい」「バナナ」とは何ですか? 「比較」という概念に少し混乱しています。何が比較されていますか?

4

1 に答える 1

2

辞書式文字列比較を行います。

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

于 2013-10-13T05:03:56.083 に答える