Что общего используется для встроенной функции coerce
для Python? Я могу увидеть применение этого, если я не знаю type
числового значения в соответствии с документацией, но существуют ли другие общие обычаи? Я бы предположил, что coerce()
также вызывается при выполнении арифметических вычислений, например. x = 1.0 +2
. Это встроенная функция, поэтому предположительно она имеет некоторое потенциальное общее использование?
Для чего используется Python coerce()?
Ответ 1
Его слева от раннего питона, он в основном заставляет кортеж чисел быть одним и тем же базовым типом числа, например.
>>> 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)
Ответ 2
Ядро программирования Python говорит:
Функция coerce() позволяет программисту полагаться не на интерпретатор Python, а на собственное преобразование двух числовых типов ".
например
>>> 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))