24

Python の組み込みcoerce関数の一般的な用途は何ですか? ドキュメントに従ってtype数値の値がわからない場合は適用できますが、他の一般的な使用法はありますか? 算術計算を実行するときにも呼び出されると思います。これは組み込み関数なので、おそらく一般的な使用法がいくつかありますか?coerce() x = 1.0 +2

4

2 に答える 2

15

初期の pythonからの残り物であり、基本的には数値のタプルを同じ基礎となる数値型にします。

>>> type(10)
<type 'int'>
>>> type(10.0101010)
<type 'float'>
>>> nums = coerce(10, 10.001010)
>>> type(nums[0])
<type 'float'>
>>> type(nums[1])
<type 'float'>

また、オブジェクトが古いクラスの数値のように振る舞うようにすることもできます
(ここでの使用法の悪い例は...)

>>> class bad:
...     """ Dont do this, even if coerce was a good idea this simply
...         makes itself int ignoring type of other ! """
...     def __init__(self, s):
...             self.s = s
...     def __coerce__(self, other):
...             return (other, int(self.s))
... 
>>> coerce(10, bad("102"))
(102, 10)
于 2013-01-24T07:48:30.043 に答える
2

Pythonコアプログラミングは次のように述べています:

関数 coerce () は、プログラマーが Python インタープリターに依存するのではなく、カスタムの 2 つの数値型変換を提供します。"

例えば

>>> coerce(1, 2)
(1, 2)
>>>
>>> coerce(1.3, 134L)
(1.3, 134.0)
>>>
>>> coerce(1, 134L)
(1L, 134L)
>>>
>>> coerce(1j, 134L)
(1j, (134+0j))
>>>
>>> coerce(1.23-41j, 134L)
((1.23-41j), (134+0j))
于 2014-01-16T04:27:57.507 に答える