2013-01-23 15 views
18

पायथन के अंतर्निहित coerce फ़ंक्शन के लिए सामान्य उपयोग क्या हैं? यदि मैं type संख्यात्मक मान as per the documentation के बारे में नहीं जानता, तो क्या मैं इसे लागू कर सकता हूं, लेकिन अन्य सामान्य उपयोग मौजूद हैं? मुझे लगता है कि coerce() को अंकगणितीय कंप्यूटेशंस करते समय भी कहा जाता है, उदा।x = 1.0 +2। यह एक अंतर्निहित कार्य है, इसलिए संभवत: इसमें कुछ संभावित आम उपयोग हैं?पाइथन के वाणिज्य() के लिए क्या उपयोग किया जाता है?

+6

) 'मजबूर कभी नहीं सुना (' (+1) – NPE

+2

पदावनत, आप प्रलेखन की धारा से लिंक के शीर्ष पर नोट को पढ़ने अगर पायथन 2.6 या 3 – imreal

+11

पर इस्तेमाल नहीं किया है, तो आप shouldn ' इसका उपयोग नहीं करते हैं, न ही आपको यह जानना चाहिए कि यह अस्तित्व में है। – 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(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)) 
संबंधित मुद्दे