पायथन 2.x और 3.x के बीच महत्वपूर्ण अंतर जो हर डेवलपर को पता होने चाहिए।
1. प्रिंट फ़ंक्शन
पायथन 2: print एक स्टेटमेंट है।
print 'Hello, World!'
print 'text', ; print 'more text' # कॉमा से नो-न्यूलाइन
पायथन 3: print() एक फ़ंक्शन है।
print('Hello, World!')
print('some text,', end='')
print('some more text here')
2. इंटीजर डिवीजन
| एक्सप्रेशन | पायथन 2 | पायथन 3 |
|---|---|---|
3 / 2 | 1 (फ्लोर) | 1.5 (ट्रू) |
3 // 2 | 1 | 1 |
3 / 2.0 | 1.5 | 1.5 |
सुझाव: पायथन 2 में from __future__ import division उपयोग करें।
3. यूनिकोड स्ट्रिंग्स
- पायथन 2: डिफ़ॉल्ट ASCII। यूनिकोड के लिए
u'...'प्रीफिक्स। - पायथन 3: डिफ़ॉल्ट यूनिकोड (UTF-8)। बाइट्स के लिए
b'...'।
# Python 3
print('strings are now utf-8 \u03BCnico\u0394é!')
# Python 2 में 'str' बाइट्स था, 'unicode' टेक्स्ट
4. एक्सेप्शन उठाना
# दोनों में काम करता है
raise IOError("your error message")
# केवल पायथन 2
raise IOError, "your error message" # Python 3 में SyntaxError
5. लिस्ट कॉम्प्रिहेंशन लूप वेरिएबल लीक
# Python 2
i = 1
[i for i in range(5)]
print(i) # 4 (लीक हो गया!)
# Python 3
i = 1
[i for i in range(5)]
print(i) # 1 (सुरक्षित)
6. अन्य उल्लेखनीय अंतर
range(): पायथन 2 में लिस्ट लौटाता है, पायथन 3 में जेनरेटर-जैसा ऑब्जेक्ट।dict.keys(),.values(),.items(): पायथन 2 में लिस्ट, पायथन 3 में व्यू ऑब्जेक्ट्स।xrange(): पायथन 2 में मौजूद, पायथन 3 में हटाया गया (range()का उपयोग करें)।__next__()vs.next(): पायथन 3 में__next__()।
निष्कर्ष
पायथन 3 अब मानक है (पायथन 2 EOL जनवरी 2020)। नए प्रोजेक्ट्स के लिए पायथन 3 का उपयोग करें। लिगेसी कोड माइग्रेट करते समय उपरोक्त अंतरों पर ध्यान दें।