2013-01-23 12 views
18

Jakie są typowe zastosowania wbudowanej funkcji Pythona coerce? Widzę zastosowanie go, jeśli nie znam wartości type o wartości numerycznej as per the documentation, ale czy istnieją inne typowe zastosowania? Domyślam się, że coerce() jest również wywoływany podczas wykonywania obliczeń arytmetycznych, np. , np.x = 1.0 +2. Jest to wbudowana funkcja, więc prawdopodobnie ma jakieś potencjalne wspólne zastosowanie?Do czego służy funkcja wymuszania Pythona()?

+6

Nigdy nie słyszał o 'przymusić()' (+1) – NPE

+2

Przestarzałe, nie używane w Pythonie 2.6 lub 3 – imreal

+11

Jeśli czytasz uwaga na górze sekcji dokumentacji związanej z ty, ty powinnaś t go używaj, nie musisz też wiedzieć, że istnieje. – geoffspear

Odpowiedz

13

Jest to po lewej stronie od early python, w zasadzie tworzy krotkę liczb o takim samym podstawowym typie liczb, np.

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

To także umożliwienie obiekty zachowywać się jak ze starymi numerami klas
(zły przykład jego wykorzystania tutaj byłyby ...)

>>> 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 rdzeń programowanie mówi: "Function coerce() zapewnia, że ​​programista nie polega na interpretorze Pythona, ale na niestandardowej dwuznacznej konwersji typu. "

np.

>>> 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))