Как часто используются встроенные функции Python coerce? Я вижу его применение, если я не знаю type числового значения согласно документации, но существуют ли другие распространенные способы использования? Я предполагаю, что coerce() также вызывается при выполнении арифметических вычислений, например, x = 1.0 +2. Это встроенная функция, так что, вероятно, у нее есть потенциальное общее использование?

23
Jzl5325 23 Янв 2013 в 22:31

2 ответа

Лучший ответ

Он перенесен из раннего 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)
14
Greg Bowyer 24 Янв 2013 в 07:56

Ядро программирования 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))
2
Keale 21 Май 2019 в 02:01