2016-12-23 4 views
5

मैं पाइथन सीखना शुरू कर रहा हूं और मुख्य रूप से जावा डेवलपर के रूप में सबसे बड़ा मुद्दा यह समझ रहा है कि टाइप चेकिंग का उपयोग कब और कब नहीं किया जाता है। ज्यादातर लोग यह कह रहे हैं कि पायथन कोड को टाइपिंग की आवश्यकता नहीं होनी चाहिए, लेकिन कई मामलों में जब मुझे विश्वास है कि यह जरूरी है। उदाहरण के लिए, मान लें कि मुझे अंकगणितीय ऑपरेशन करने के लिए एक विधि पैरामीटर का उपयोग करने की आवश्यकता है, मुझे यह क्यों सुनिश्चित नहीं करना चाहिए कि तर्क एक संख्यात्मक डेटा प्रकार है?मुझे पायथन में टाइप चेकिंग (यदि कभी भी) का उपयोग कब करना चाहिए?

यह समस्या न केवल कार्यों तक ही सीमित है। कक्षा चर के लिए एक ही विचार प्रक्रिया मेरे लिए होती है। नियमित रूप से लागू कक्षा चर के बजाय प्रकार की जांच करने के लिए मुझे क्यों और कब गुणों का उपयोग करना चाहिए (@property का उपयोग करना)?

यह मेरे लिए विकास के करीब आने का एक नया तरीका है, इसलिए मैं सहायता समझने की सराहना करता हूं।

+12

क्यों * आपको * यह जांचना चाहिए कि आपकी विधि एक संख्यात्मक प्रकार प्राप्त कर रही है? यदि ऐसा नहीं होता है, तो आप जो कुछ भी कर सकते हैं वह कुछ प्रकार का अपवाद उठाता है; लेकिन एक अपवाद * पहले से * उठाया जाएगा यदि आपने एक ऐसे अंक पर अंकगणितीय ऑपरेशन करने का प्रयास किया जो इसका समर्थन नहीं करता है। तो स्पष्ट रूप से जांचने का क्या मतलब है? –

+3

संबंधित - http://stackoverflow.com/questions/1950386/is-it-pythonic-to-check-function-argument-types –

+0

संभावित डुप्लिकेट [क्या मुझे पाइथन प्रकार की जांच को मजबूर करना चाहिए?] (Http: // stackoverflow। कॉम/प्रश्न/17493159/कंधे-आई-फोर्स-पायथन-टाइप-चेकिंग) – gerosalesc

उत्तर

5

यह प्रकार की जानकारी की जांच करने के बजाय बतख टाइपिंग का उपयोग नहीं pythonic है: अगर यह एक बतख की तरह लग रहा है, एक बतख की तरह चलता है और एक बतख की तरह नीम हकीमों तो यह एक बतख है।

def quack(duck): 
    duck.quack() 

यह केवल चलेंगे अगर duck एक प्रतिदेय quack attrubute है, यह एक अपवाद नहीं तो फोन करने वाले ने पकड़ा जा सकता है जो बढ़ा देंगे।

+0

सिर्फ रिकॉर्ड के लिए, डक-टाइपिंग शब्द के लिए कुछ पृष्ठभूमि: http://stackoverflow.com/questions/4205130/what-is-duck-typing – ppasler

+0

समस्या आमतौर पर यह है कि आप इसे केवल तभी पूछने के लिए कहते हैं जब उपयोगकर्ता frobs उस विशेष तरीके से विजेट, और इसलिए आप पाते हैं कि किसी ने कभी भी सबसे महत्वपूर्ण डेमो के दौरान एक बतख के बजाय कुत्ते को पारित किया है। –

0

सरल उत्तर शायद किसी भी प्रकार की जांच के बिना शुरू होता है और देखें कि क्या होता है। आपको शायद पता चल जाएगा - जैसा कि मैंने 17 साल पहले किया था और मेरे आश्चर्य के लिए बहुत कुछ - आपको इसकी अपेक्षा से कम रास्ता की आवश्यकता है। रिकॉर्ड के लिए इस्तेमाल किया जाने वाला रिकॉर्ड के लिए आप कुछ भी लिखने की उम्मीद नहीं कर सकते थे, लेकिन त्वरित स्क्रिप्ट और खिलौना कार्यक्रमों को सख्त टाइपकेकिंग के बिना और भाषा के खिलाफ लड़ने में काफी समय गंवा दिया जब तक कि मैंने गंभीर पायथन ऐप्स कोड और stdlib कोड पढ़ना शुरू नहीं किया और इसे पाया बिना काम किया

संबंधित मुद्दे