web-dev-qa-db-ja.com

Pythonでの強制vs.強制

Pythonのドキュメントとメーリングリストで、値が「キャスト」されたり、「強制」されたりすることがあります。違いは何ですか?

31
Justin R.

「キャスティング」はPythonでは使用しないでください。タイプ変換のみがあり、キャスト(Cの意味)はありません。タイプ変換が行われます。 int(o)を介して、オブジェクトoが整数に変換されます(実際には、整数オブジェクトはoから構築されます)。強制はバイナリ演算の場合に発生します:x+y、xとyには異なる型があり、操作を実行する前にそれらは単一の型に強制変換されます。 2.xでは、特別なメソッド__coerce__は、オブジェクトが強制を制御できるようにします。

32

キャストは明示的です。強制は暗黙のうちにあります。

Pythonの例は次のようになります。

cast(2, POINTER(c_float)) #cast
1.0 + 2  #coerce 
1.0 + float(2) #conversion

キャストは本当にC FFIでのみ登場します。 CまたはJavaでのキャスティングと呼ばれるものは、Pythonでは変換と呼ばれますが、他の言語との類似点があるため、キャスティングと呼ばれることがよくあります。 (Pythonを含む)の経験がある Coercion は暗黙の型変更です。

40
stonemetal