कोडिंग समुदाय में हमेशा एक बहस होती है कि कौन सा पायथन संस्करण सीखने के लिए सबसे अच्छा था:पायथन 2.x या पायथन 3.x।
नीचे पाइटन 2.x और अजगर 3.x के बीच महत्वपूर्ण अंतर हैं
1. प्रिंट फ़ंक्शन
पायथन 2.x में, "प्रिंट" को एक कथन के रूप में माना जाता है और पायथन 3.x स्पष्ट रूप से "प्रिंट" को एक फ़ंक्शन के रूप में मानता है। इसका मतलब है कि हमें आपके प्रिंट के अंदर की वस्तुओं को मानक तरीके से फ़ंक्शन कोष्ठक में पास करना होगा अन्यथा आपको एक सिंटैक्स त्रुटि मिलेगी।
#Python 2.7 print 'Python', python_version() print 'Hello, World!' print('Hello, World!') print "text", ; print 'some more text here'
आउटपुट
Python 2.7.6 Hello, World! Hello, World! text print some more text here Python 3 import sys print("Python version is %s.%s.%s" %sys.version_info[:3]) print('Hello, World!') print("some text,", end="") print('some more text here')
आउटपुट
Python version is 3.6.1 Hello, World! some text,some more text here >>> print "Hello" Syntax Error: Missing parentheses in call to 'print'
2. पूर्णांक विभाजन
पायथन 2 दशमलव बिंदु के बाद बिना किसी अंक के आपके द्वारा टाइप की गई संख्याओं को पूर्णांक मानता है, जिससे विभाजन के दौरान कुछ अप्रत्याशित परिणाम हो सकते हैं। उदाहरण के लिए, यदि आप पायथन 2 कोड में अभिव्यक्ति 3/2 टाइप करते हैं, तो मूल्यांकन का परिणाम 1 होगा, न कि 1.5 जैसा कि आप उम्मीद कर सकते हैं। अपने पायथन 3 कोड में केवल x का उपयोग करने के बजाय या तो फ्लोट (x) का उपयोग करने की अनुशंसा की जाती है (कोडबेस पोर्ट को पायथन 2 में शामिल करें) या अपनी पायथन 2 स्क्रिप्ट में __future__ आयात डिवीजन से उपयोग करें।
#पायथन 2
print 'Python', python_version() print '3 / 2 =', 3 / 2 print '3 // 2 =', 3 // 2 print '3 / 2.0 =', 3 / 2.0 print '3 // 2.0 =', 3 // 2.0
आउटपुट
Python 2.7.6 3 / 2 = 1 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0
#पायथन 3.6.1
import sys print('Python %s.%s.%s' %sys.version_info[:3]) print('3 / 2 =', 3 / 2) print('3 // 2 =', 3 // 2) print('3 / 2.0 =', 3 / 2.0) print('3 // 2.0 =', 3 // 2.0)
आउटपुट
Python 3.6.1 3 / 2 = 1.5 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0
3. यूनिकोड स्ट्रिंग्स
डिफ़ॉल्ट रूप से, पायथन 3 स्ट्रिंग्स को यूनिकोड के रूप में संग्रहीत करता है जबकि पायथन 2 के लिए आपको "यू" के साथ एक स्ट्रिंग को चिह्नित करने की आवश्यकता होती है यदि आप इसे यूनिकोड के रूप में संग्रहीत करना चाहते हैं। यूनिकोड स्ट्रिंग्स ASCII स्ट्रिंग्स की तुलना में अधिक बहुमुखी हैं, जो कि Python 2 डिफ़ॉल्ट हैं, क्योंकि वे विदेशी भाषाओं के अक्षरों के साथ-साथ इमोजी और मानक रोमन अक्षरों और अंकों को भी स्टोर कर सकते हैं।
#पायथन 2
>>> print type(unicode('this is like a python3 str type')) <type 'unicode'> >>> print type(b'byte type does not exist') <type 'str'> >>> print 'they are really' + b' the same' they are really the same
#पायथन 3
import sys print('Python %s.%s.%s' %sys.version_info[:3]) print('strings are now utf-8 \u03BCnico\u0394é!') print('Python %s.%s.%s' %sys.version_info[:3], end="") print(' has', type(b' bytes for storing data')) print('Python %s.%s.%s' %sys.version_info[:3], end="") print(' also has', type(bytearray(b'bytearrays')))
आउटपुट
Python 3.6.1 strings are now utf-8 μnicoΔé! Python 3.6.1 has <class 'bytes'> Python 3.6.1 also has <class 'bytearray'>भी है।
"स्ट्रिंग" + बी "डेटा के बाइट्स" एक त्रुटि के माध्यम से होगा।
>>> print ('they are really' + b' the same') Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> print ('they are really' + b' the same') TypeError: must be str, not bytes
4. अपवाद उठाना
अपवादों को बढ़ाने के लिए पायथन 3 को अलग-अलग सिंटैक्स की आवश्यकता होती है। यदि आप उपयोगकर्ता को एक त्रुटि संदेश आउटपुट करना चाहते हैं, तो आपको सिंटैक्स का उपयोग करने की आवश्यकता है -
raise IOError(“your error message”)
उपरोक्त सिंटैक्स पायथन 2 और पायथन 3 दोनों पर काम करता है।
हालांकि, निम्नलिखित कोड केवल अजगर 2 में काम करता है, अजगर 3 में नहीं
raise IOError, “your error message”
5. सूची समझ लूप चर
पायथन 2 में, वेरिएबल को "लूप के लिए" में वैश्विक वैरिएबल के समान नाम देने से ग्लोबल वैरिएबल का मान बदल सकता है - जो आम तौर पर हम नहीं चाहते हैं। यह समस्या पायथन 3 में तय की गई है, इसलिए आप अपने "लूप के लिए" में नियंत्रण चर के लिए पहले से उपयोग किए गए एक चर नाम का उपयोग कर सकते हैं, इसके बारे में चिंता किए बिना कि यह आपके बाकी कोड में चर के मूल्यों के साथ लीक और गड़बड़ कर रहा है।
#Python 2 print 'Python', python_version() i = 1 print 'before: i =', i print 'comprehension: ', [i for i in range(5)] print 'after: i =', i
आउटपुट
Python 2.7.6 before: i = 1 comprehension: [0, 1, 2, 3, 4] after: i = 4
#पायथन 3
import sys print('Python %s.%s.%s' %sys.version_info[:3]) i = 1 print('before: i =', i) print('comprehension:', [i for i in range(5)]) print('after: i =', i)
आउटपुट
Python 3.6.1 before: i = 1 comprehension: [0, 1, 2, 3, 4] after: i = 1