2016-06-24 10 views
6

अनुवाद संकेतों का उपयोग करने के लिए प्रकार संकेतों का उपयोग करना अब पाइथन 3.5 संस्करण में उपलब्ध हैं। विनिर्देश (PEP 484) में लक्ष्यों (और गैर लक्ष्यों) स्पष्ट रूप से संपर्क में हैं:पाइथन से साइथन

तर्क और लक्ष्य

यह पीईपी प्रकार एनोटेशन के लिए एक मानक वाक्य रचना प्रदान करना है, खोलने अजगर कोड आसान स्थिर विश्लेषण और रीफैक्टरिंग, संभावित रनटाइम प्रकार की जांच, और (शायद, कुछ संदर्भों में) कोड जनरेटिंग प्रकार की जानकारी का उपयोग करना। [...]

इन लक्ष्यों में से, स्थिर विश्लेषण सबसे महत्वपूर्ण है।

गैर लक्ष्यों

प्रदर्शन अनुकूलन के लिए प्रकार संकेत का उपयोग करते हुए पाठक के लिए एक व्यायाम के रूप में छोड़ दिया जाता है।

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

होगा एक मुश्किल काम एक उपकरण इस नए प्रकार बातें करने के लिए कोड में बिखरे हुए संकेत स्वचालित रूप से Cython वाक्य रचना को उन्हें अनुवाद और संभवतः काम के आराम के कर का उपयोग करता है लिखने (उनमें मॉड्यूल में संकलित और सभी आयात उन्हें वापस)? इसलिए, सभी कोड बेस में एक ही भाषा वाक्यविन्यास साझा करना संभव होगा।

सैद्धांतिक रूप से, इस तरह के एक उपकरण को लिखना संभव है, लेकिन मुझे यकीन नहीं है कि यह मूल्यवान है (इसे लिखने की जटिलता के संदर्भ में और वास्तविक सुधार जो उपज होगा)।

धन्यवाद।

+0

जब आपने 'साइथन' का उपयोग किया है, तो आपने कितना पाइथन कोड परिवर्तित किया था? मैंने सोचा कि आदर्श एक सबसेट पर ध्यान केंद्रित करना था जहां गति बढ़ती है, और बाकी को पायथन में छोड़ दें। या मौजूदा सी ++/फोरट्रान कोड के लिए पुल के रूप में 'साइथन' का उपयोग करें। – hpaulj

+0

मैं आपके साथ कुछ हिस्सों से सहमत हूं। लेकिन एक बेहतर वाक्यविन्यास होने के लिए, मुझे लगता है कि बेहतर होगा। लेकिन यह ठीक है, जैसा कि @ hpaulj ने कहा, मेरा विषय Stackoverflow के लिए नहीं है। माफ़ कीजिये। – GustavoIP

उत्तर

3

किसी और ने अभी 484 और साइथन, PEP-484 Type Annotations with own types से पूछा, और मैंने कुछ महीने पहले 484 और numpy के थ्रेड के साथ जवाब दिया।

मुझे स्टैक ओवरफ्लो के लिए इस विषय की उपयुक्तता के बारे में संदेह है। यह एक शोध विषय है, 'मैं इस कोडिंग समस्या को कैसे हल करूं' प्रश्न नहीं।

सीमित पढ़ने के आधार पर, 484 में टाइप-संकेत प्रारंभिक हैं, और 484 लेखकों द्वारा विकसित कोड चेकर तक कोई भी उपयोग सीमित है। पीई 3 ने लंबे समय तक एनोटेशन किया है, लेकिन मैंने कोड के बहुत कम उदाहरण देखे हैं जिनमें उन्हें शामिल किया गया है। निश्चित रूप से numpy कोड में नहीं है जिसे मैं यहां केंद्रित करता हूं।

एक और बिंदु यह है कि cython और numpy (और numba) पीई 2 के साथ पीई 2 के साथ उतना ही अधिक उपयोग किया जाता है, यदि अधिक नहीं, तो Py3 से अधिक। तो पीई 3.5 में नवीनतम घंटी-एन-सीटी आमतौर पर इन उपयोगकर्ताओं द्वारा अनदेखा की जाती है। @ ऑपरेटर एकमात्र हालिया जोड़ा है जो numpy उपयोगकर्ता मूल्य है।

आपका स्वागत है आपका स्वागत है, लेकिन मैं इस प्रश्न को डुप्लिकेट या ऑफ विषय के आधार पर बंद करने के लिए नामांकित कर सकता हूं।

typing मॉड्यूल https://github.com/python/typing

mypy में विकसित किया जा रहा है प्रकार 484, के आधार पर चेकर https://github.com/python/mypy

जहां काटने है कि (मजाकिया, ~/mypy निर्देशिका है जहाँ मैं अपने सभी अतः परीक्षण स्क्रिप्ट डाल दिया। है) एज पायथन प्रकार की जांच का काम किया जा रहा है, यहां नहीं।

+0

क्षमा करें, मुझे उस बारे में कुछ भी नहीं मिला जब मैंने यहां स्टैकओवरफ्लो और Google में खोज की थी। आपके समय के लिए धन्यवाद! – GustavoIP