2009-09-28 8 views
6

पर्ल आदतें मर जाती हैं। परिवर्तनीय घोषणा, स्कोपिंग, वैश्विक/स्थानीय 2 भाषाओं के बीच अलग है। क्या अनुशंसित पायथन भाषा मुहावरे का एक सेट है जो पर्ल कोडिंग से पाइथन कोडिंग को कम दर्दनाक में संक्रमण प्रदान करेगा।पायथन पर्यावरण में पर्ल आदतों का प्रबंधन

सूक्ष्म परिवर्तनीय गलत वर्तनी एक असाधारण राशि बर्बाद कर सकती है।

मुझे समझ में चर घोषणा मुद्दा अजगर लोगों मैं परिवर्तन या सुविधाओं, के बीच सिर्फ एक विश्वसनीय पुल भाषा के लिए उनका तर्क है नहीं कर रहा हूँ 2 भाषाओं कि मेरे पर्ल की आदतों का कारण नहीं बनेगा मेरी अजगर प्रयासों सिंक के बीच अर्ध धार्मिक है।

धन्यवाद।

+4

अपने जीवन को खाने वाले टाइपों के बारे में, http://stackoverflow.com/questions/613364/ - सारांश में कुछ दिलचस्प संबंधित अंक हैं: लोग एक स्थिर चेकर जैसे पिलिंट – daotoad

+0

का उपयोग करने की सलाह देते हैं, क्या आप इसका अर्थ समझ सकते हैं "परिवर्तनीय घोषणा मुद्दा"? मैं पर्ल और पायथन दोनों को जानता हूं और जबकि भाषाएं वास्तव में अलग हैं, मुझे यकीन नहीं है कि आप किस मुद्दे का जिक्र कर रहे हैं। –

+5

पेर्ल में "सख्त उपयोग करें;" हम में से कई के लिए एक प्रमुख है। पाइथन की मेरी समझ (जो बहुत अच्छी नहीं है) यह है कि अजगर का कोई ऐसा निर्माण नहीं है। मेरा मतलब है "परिवर्तनीय घोषणा मुद्दा"। धन्यवाद। – namrokretep

उत्तर

1

मुझे सवाल पसंद है, लेकिन मुझे पर्ल में कोई अनुभव नहीं है इसलिए मुझे यकीन नहीं है कि आपको सबसे अच्छी सलाह कैसे दी जाए।

मेरा सुझाव है कि आप "पायथन मुहावरे" के लिए Google खोज करें। आपको कुछ रत्न मिलेगा। विशेष रूप से:

http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html

http://docs.python.org/dev/howto/doanddont.html

http://jaynes.colorado.edu/PythonIdioms.html

चर "घोषणा" मुद्दे का सवाल है, यहाँ आप के लिए मेरी सबसे अच्छी सलाह है:

याद रखें अजगर में है कि, ऑब्जेक्ट्स का अपना जीवन होता है, परिवर्तनीय नामों से अलग होता है। एक परिवर्तनीय नाम एक टैग है जो किसी ऑब्जेक्ट से जुड़ा होता है। किसी भी समय, आप नाम को किसी भिन्न ऑब्जेक्ट पर, किसी भिन्न ऑब्जेक्ट पर पुनर्निर्मित कर सकते हैं। इस प्रकार, यह पूरी तरह से कानूनी है:

x = 1 # bind x to integer, value == 1 
x = "1" # bind x to string, value is "1" 

पायथन वास्तव में दृढ़ता से टाइप किया गया है; कोड 1 + "1" निष्पादित करने का प्रयास करें और देखें कि यह कितना अच्छा काम करता है, अगर आप मुझ पर विश्वास नहीं करते हैं। मान 1 के साथ पूर्णांक ऑब्जेक्ट स्पष्ट प्रकार जबरन की अनुपस्थिति में स्ट्रिंग मान को जोड़ने को स्वीकार नहीं करता है। तो पाइथन नामों में कभी भी सिगिल वर्ण नहीं होते हैं जो चर के गुणों को ध्वजांकित करते हैं; यह सिर्फ इतना नहीं है कि पायथन चीजें कैसे करता है। किसी भी कानूनी पहचानकर्ता नाम किसी भी प्रकार के किसी भी पायथन ऑब्जेक्ट से बंधे जा सकते हैं।

+0

"नाम को किसी भिन्न ऑब्जेक्ट पर दोबारा बांटें" ... पर्ल ओओ सिस्टम पायथन से लिया गया था, इसलिए यह संभव है पर्ल में करना है। –

+0

जैसा कि मैंने कहा, मुझे पर्ल में कोई वास्तविक अनुभव नहीं है, इसलिए मुझे पर्ल ओओ सिस्टम के बारे में कुछ भी पता नहीं है। लेकिन मैं उत्सुक हूं: मैंने पर्ल में सोचा था कि "सिगिल" थे जो आपको चर के प्रकार के बारे में कुछ बताते थे। उदाहरण के लिए, @x एक सरणी है। आप कुछ ऐसा करने के लिए "@x" को दोबारा नहीं कर सकते जो कि सरणी नहीं है, है ना? पायथन में कोई सिगिल नहीं है, और यह एक अंतर है जिस पर मैंने टिप्पणी करने के लायक विचार किया। – steveha

+1

@steveha: perl में, आपके पास $ x, @x,% x, और * x, एक ही नाम के साथ सभी अलग-अलग प्रकार हो सकते हैं। ऐसा करने के लिए पूरी तरह से सर्वोत्तम अभ्यास नहीं है, लेकिन अगर आप इसे चाहते हैं तो यह वहां है।(लेकिन हाँ, "@x" का अर्थ सरणी एक्स है यदि आप सब कुछ बाद में हैं)। – runrig

1

पाइथन $ _ में मौजूद नहीं है पाइथन खोल को छोड़कर और वैश्विक दायरे के साथ चरम पर फंसे हुए हैं।

व्यवहार में यह है दो प्रमुख प्रभाव:

  1. अजगर में आप, पर्ल के रूप में के रूप में स्वाभाविक रूप से रेगुलर एक्सप्रेशन का उपयोग नहीं कर सकते हैं मिलान s0 प्रत्येक $ दोहराया _ और इसी तरह के मैचों को पकड़ने अधिक बोझिल
  2. अजगर कार्यों है स्पष्ट रूप से कहा जा सकता है या डिफ़ॉल्ट चर

हालांकि ये अंतर काफी मामूली हैं जब कोई मानता है कि पाइथन में बस सबकुछ कक्षा बन जाता है। जब मैं पर्ल करता था तो मैंने "नक्काशी" के बारे में सोचा; पायथन में मुझे लगता है कि मैं "रचना" कर रहा हूं।

पायथन में पर्ल की मूर्खतापूर्ण समृद्धि नहीं है और मुझे लगता है कि यह संभवतः अनुवाद करने का प्रयास करने की गलती है।

+0

perl() अगर (वहां ($ # कुछ नहीं) || $ rich = ~/about /); –

0

अपने चर नामों को गलत टाइप न करें। गंभीरता से।छोटे, आसान, वर्णनात्मक लोगों का उपयोग करें, उन्हें स्थानीय रूप से उपयोग करें, और वैश्विक दायरे पर भरोसा न करें।

यदि आप एक बड़ी परियोजना कर रहे हैं जो इसके द्वारा अच्छी तरह से परोसा नहीं जाता है, तो सुनिश्चित करें कि आपके कोड को सुनिश्चित करने के लिए पिलिंट, यूनिट परीक्षण और cover.py का उपयोग करें।

other threads में से एक में एक टिप्पणी से कॉपी किया गया:

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

+4

लेकिन एक टाइपो असाइनमेंट अभी भी एक मृत चर की घोषणा बन सकता है, जिससे तर्क त्रुटि हो सकती है लेकिन कोई संकलन त्रुटि नहीं होती है। – hobbs

+1

संक्षिप्त नाम? लेकिन फिर आपको टिप्पणी करनी होगी! (http://xrl.us/bfn45h) – ysth

+0

@ हॉब्स अच्छी तरह से हाँ। एक अच्छा विचार का प्रयोग करें और के रूप में एक लिंट/परीक्षण मामलों का उपयोग करें मैंने कहा? अगर यह काम नहीं करता है, तो यह विफल रहता है। सरल। पाइथन में "सख्त" मोड नहीं है, जो भाषा को तोड़ने में एक को shoehorn करने की कोशिश कर रहा है। यदि आपके नाम इतने लंबे हैं कि आप नियमित रूप से उन्हें गलत टाइप करते हैं, तो आपको उनका नाम बदलने की आवश्यकता है। इसके अलावा, अजगर पर्ल नहीं है। –

2

पायथन कक्षाओं को अलग-अलग फ़ाइलों में विभाजित करना (जैसे जावा में, प्रति फ़ाइल एक वर्ग) स्कॉइंग समस्याओं को ढूंढने में मदद करता है, हालांकि यह मूर्खतापूर्ण पायथन नहीं है (यानी, पाइथोनिक नहीं है)।

मैं बहुत पर्ल के बाद अजगर लेखन किया गया है और tchrist से पाया उपयोगी होने के लिए, भले ही यह पुराना है:

http://linuxmafia.com/faq/Devtools/python-to-perl-conversions.html

पर्ल के बिना सबसे उत्कृष्ट चर scoping कर करने के लिए इस्तेमाल हो रही है दूसरी किया गया है मेरे perl-> पायथन संक्रमण के साथ सबसे मुश्किल मुद्दा। पहला स्पष्ट है यदि आपके पास बहुत अधिक है: सीपीएएन।

+0

मैं इसे लेता हूं आपको पीपीआई के बारे में पता नहीं है। –

+2

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

1

पढ़ें, समझते हैं, का पालन करें, और PEP 8, जो अजगर के बारे में सब कुछ के लिए शैली के दिशा-निर्देशों का विवरण प्यार करता हूँ।

गंभीरता से, यदि आप पाइथन की अनुशंसित मुहावरे और आदतों के बारे में जानना चाहते हैं, तो यह स्रोत है।

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