Pythonのドキュメントとメーリングリストで、値が「キャスト」されたり、「強制」されたりすることがあります。違いは何ですか?
「キャスティング」はPythonでは使用しないでください。タイプ変換のみがあり、キャスト(Cの意味)はありません。タイプ変換が行われます。 int(o)
を介して、オブジェクトoが整数に変換されます(実際には、整数オブジェクトはoから構築されます)。強制はバイナリ演算の場合に発生します:x+y
、xとyには異なる型があり、操作を実行する前にそれらは単一の型に強制変換されます。 2.xでは、特別なメソッド__coerce__
は、オブジェクトが強制を制御できるようにします。
キャストは明示的です。強制は暗黙のうちにあります。
Pythonの例は次のようになります。
cast(2, POINTER(c_float)) #cast
1.0 + 2 #coerce
1.0 + float(2) #conversion
キャストは本当にC FFIでのみ登場します。 CまたはJavaでのキャスティングと呼ばれるものは、Pythonでは変換と呼ばれますが、他の言語との類似点があるため、キャスティングと呼ばれることがよくあります。 (Pythonを含む)の経験がある Coercion は暗黙の型変更です。