2012-01-22 12 views
7

मुझे पाइथन 3 का कुछ ज्ञान है (मैं शुरुआत नहीं कर रहा हूं, लेकिन मैं एक विशेषज्ञ नहीं हूं)। मुझे वेब विकास में दिलचस्पी है, इसलिए मैं Django का उपयोग करना चाहता हूं। पायथन के दो संस्करणों के बीच अंतर क्या हैं? मुझे 3 से 2.x तक कैसे स्विच करना चाहिए?अगर मैं पहले से ही पाइथन 3 जानता हूं तो मैं पाइथन 2 कैसे सीखूं?

उत्तर

5

के बीच का अंतर वे इतने अलग नहीं हैं पर एक बहुत अधिक जानकारी नहीं है। पाइथन 3 में जो कुछ भी आपने सीखा है वह पाइथन 2 में स्थानांतरित हो जाएगा। मैं सुझाव दूंगा कि आप आसानी से गोता लगाएँ। कभी-कभी आपको एक त्रुटि संदेश दिखाई देगा, लेकिन अधिकांश समय वे स्वयं व्याख्यात्मक होंगे।

मेरे शर्त है कि सीखने Django आप six पुस्तकालय सहायक हो सकते हैं अगर आप कोड मजबूती के साथ पीछे की ओर-संगत है कि लिखना चाहते हैं अजगर 2.

करने के लिए इस्तेमाल हो रही है की तुलना में जिस तरह से कठिन हो जाएगा।

  1. बचें पुरानी शैली वर्गों का उपयोग करना: अन्यथा, मैं केवल दो चीजें हैं जो पहले से पता करने के लिए महत्वपूर्ण के रूप में आप अजगर 2 के लिए पीछे की ओर जाना हो सकता है के बारे में सोच सकते हैं। अजगर 3 में, आप इस तरह एक वर्ग घोषणा कर सकते हैं किसी भी समस्या के बिना:

    class Foo: 
        pass 
    

    अजगर 2 में, यदि आप ऐसा करते हैं, तो आप एक पुरानी शैली वर्ग है, जो शायद आप नहीं चाहते। लेकिन आपको इसके बारे में कोई त्रुटि संदेश नहीं मिलेगा, इसलिए समस्याएं पैदा करने से पहले सूक्ष्म विरासत कीड़े उत्पन्न हो सकती हैं और लंबे समय तक छिपी रहती हैं। तो अजगर 2 में, स्पष्ट रूप से object से विरासत का ध्यान रखें:

    class Foo(object): 
        pass 
    
  2. बचें range(n) का उपयोग कर, कम से कम n के बड़े मूल्यों के लिए। पायथन 3 में, range एक बुद्धिमान पुनरावर्तक देता है, लेकिन पायथन 2, range में एक वास्तविक सूची देता है। बड़ी श्रृंखला के लिए, यह बहुत सारी मेमोरी जला सकता है। पायथन 2 में पाइथन 3 के range के व्यवहार को प्राप्त करने के लिए, xrange(n) का उपयोग करें। इसी प्रकार की चेतावनी शब्दकोश keys(), values(), और items() विधियों पर लागू होती है। वे सभी पाइथन 2 में सूचियों की सूची देते हैं। iterkeys(), itervalues(), और iteritems() मेमोरी को सहेजने के तरीकों का उपयोग करें।

ऐसे unicode समर्थन के रूप में इस सवाल का जवाब कई अन्य उत्कृष्ट है कि कुछ अन्य विवरण को कवर किया, कर रहे हैं।

+0

धन्यवाद। शायद मैं कभी भी इसे महसूस किए बिना उस गलती को कर दूंगा। – Orcris

5

आप पहले से ही अजगर 3 से परिचित हैं, तो लगभग कोई मतभेद आप जब अजगर 2. सबसे उपयोगकर्ता के लिए दृश्यमान मतभेद में कोडिंग के बारे में चिंता करना होगा के विवरण के साथ क्या करना है कर रहे हैं print कथन, जिसे आप शायद Django के लिए भी उपयोग नहीं करेंगे।

तो, बस कोड लिखें, और किसी भी विशिष्ट समस्याओं के बारे में पूछें जो आपको मिल सकती हैं।

3

एक और बड़ा अंतर यह है कि पाइथन 3 यूनिकोड को कैसे संभालता है - पाइथन 3 में सब कुछ या तो यूनिकोड स्ट्रिंग या बाइनरी डेटा है, जबकि पायथन 2 में यूनिकोड स्ट्रिंग्स और 8-बिट तारों के बीच एक अंतर बनाया गया था।

निम्नलिखित पृष्ठ अजगर 2 और 3. http://docs.python.org/release/3.0.1/whatsnew/3.0.html

1

इस के माध्यम से पढ़ें: http://python3porting.com/differences.html

नोट बातें बस अजगर 2 से हटा का एक बहुत देखते हैं कि,() लागू की तरह है, जो आपको इसलिए बारे में चिंता करने की जरूरत नहीं है।

साथ ही, प्रेषक द्वारा नोट किया गया है, आप ऑब्जेक्ट से सबक्लास का उपयोग करते हैं (यह पाइथन 3 में भी अनुशंसित है, संभवत: यह वास्तव में पाइथन 2 में एक अंतर बनाता है)।

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