今日、Python で奇妙な比較に出くわしました。これが私が見つけたものです:
'101' > -1
True
'101' < -1
False
'101' > 100
True
'101' < 100
False
'101' < 1
False
これらの式が何をテストしているのかわかりません。どんなヒントも役に立ちます。
今日、Python で奇妙な比較に出くわしました。これが私が見つけたものです:
'101' > -1
True
'101' < -1
False
'101' > 100
True
'101' < 100
False
'101' < 1
False
これらの式が何をテストしているのかわかりません。どんなヒントも役に立ちます。
言語リファレンスから:
演算子 <、>、==、>=、<=、および != は、2 つのオブジェクトの値を比較します。オブジェクトは同じタイプである必要はありません。両方とも数値の場合は、共通の型に変換されます。それ以外の場合、異なるタイプのオブジェクトは常に等しくなく、一貫して任意に順序付けられます。
数値型と非数値型を一緒に比較する場合、どちらかの変数の値が何であれ、式が真になるためには数値型が最初に来る必要があります。
Python で互換性のない 2 つの型を比較すると、型の名前がアルファベット順に比較されます。詳細については、この質問を参照してください。
なぜこの表現をこれまでにテストする必要があるのか わかりません。おそらく、それらはタイプをチェックするために使用されるかもしれません。
foo < bar が true で、bar が数値変数ではないことがわかっている場合、foo は数値でなければならず、計算などで使用できます。
数値型と非数値型を注文すると、数値型が先になります。