2013-01-23 4 views
18

파이썬에 내장 된 coerce 함수의 일반적인 용도는 무엇입니까? 숫자 as per the documentationtype을 모르는 경우 적용 할 수 있지만 다른 일반적인 사용법이 있습니까? 산술 계산을 수행 할 때 coerce()도 호출됩니다. .x = 1.0 +2. 내장 함수이기 때문에 일반적인 사용법이 될 수 있습니다.Python의 coerce()는 무엇을 위해 사용됩니까?

+6

'는 shouldn, (+1) – NPE

+2

당신이에 링크 된 문서의 섹션의 상단에있는 메모를 읽으면 파이썬 2.6 또는 3 – imreal

+11

에 사용되지 않는, 사용되지 않는') (강제 변환'들어 본 적이 그것을 사용하거나 그것이 존재 하는지를 알아야 할 필요가 없습니다. – geoffspear

답변

13

왼쪽 숫자가 early 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) 
2

파이썬 코어 프로그래밍 말한다 (... 그것의 사용의 나쁜 예는 여기에있을 것입니다) 객체가
이 된 클래스와 숫자처럼 행동 할 수 있도록도 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)) 
관련 문제