تفاوت پایتون 2 و 3؛ بررسی ۶ تفاوت اساسی

تفاوت پایتون 2 و 3
Avatar
نویسنده: علیرضا برزودی
جمعه 26 خرداد 1402
مطالعه: ۹ دقیقه ۰ نظر ۱۲۸۷ بازدید

تفاوت پایتون 2 و 3 از معرفی نسخه ۳ پایتون، یعنی در سال ۲۰۰۸، مطرح شد. پایتون 3 توانست نسخه‌ای از پایتون را به‌نمایش بگذارد که علاوه‌بر بهره‌مندی از قابلیت‌های متعدد، زبان برنامه‌نویسی را نیز ساده‌تر کرد. ناگفته نماند این نسخه جدید کار را برای برنامه‌نویسانی سخت‌تر کرد که با پایتون 2 برنامه‌نویسی می‌کردند؛ زیرا به‌طور‌کلی سینتکس پایتون ۲ با پایتون ۳ متفاوت است. حال سؤال مهم این است بین نسخه‌های مختلف پایتون کدام‌یک کاربردی‌تر است؟ در این مقاله از آموزش برنامه‌نویسی بلاگ پارس پک، ۶ نمونه از تفاوت های پایتون 2 و 3 بررسی خواهیم کرد؛ پس تا پایان با ما همراه باشید.

تفاوت پایتون 2 و 3

تفاوت پایتون 2 و 3 را می‌توان از جنبه‌های مختلفی بررسی کرد. با معرفی پایتون ۳ در سال ۲۰۰۸ تفاوت‌هایی در این نسخه با پایتون ۲ نمایان شد. به‌طورکلی، سینتکس پایتون ۳ تغییر کرده است و سعی در آسان‌ترکردن برنامه‌نویسی پایتون دارد. درادامه، ۶ تفاوت اصلی پایتون 2 و 3 را بررسی می‌کنیم.

مقایسه پایتون 2 و 3
پایتون ۲ و ۳ چه تفاوتی با هم دارند؟

۱. عملکرد چاپ

در بررسی اولین تفاوت پایتون 2 و پایتون 3 عملکرد چاپ این دو نسخه را بررسی خواهیم کرد. در پایتون 2، عملکرد چاپ (Print) به‌عنوان دستور شناخته می‌شود؛ در‌حالی‌که در پایتون 3، تابع است. به‌بیان بهتر، در پایتون ۲ برای به‌کارگیری دستور Print به قرار‌دادن آن در پرانتز اجباری نیست. این یعنی با پرانتز یا بدون پرانتز، دستور مذکور در پایتون 2 اجرا می‌شود. این در حالی‌ است که اگر Print را در پایتون 3 بدون پرانتز به‌کار ببرید، برنامه با خطا مواجه خواهد شد. مثال‌های زیر به فهمیدن این موضوع کمک می‌کند:

#Python 2.7

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'some more text here'

خروجی دستور Print در Python 2.7.6

Output

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’)

خروجی دستور Print در Python version is 3.6.1

Output

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 و 3 از نظر تقسیم دو عدد صحیح باید بگوییم اگر قصد دارید برنامه‌ای بنویسید تا در آن نتیجه تقسیم دو عدد صحیح غیربخش‌پذیر به‌صورت دقیق محاسبه شود، پایتون 2 به‌کارتان نخواهد آمد. دیگر تفاوت پایتون 2 و 3 این بوده که در پایتون 2، نتایج تقسیم اعداد صحیح و غیربخش‌پذیر به‌صورت رند نمایش داده می‌شود؛ یعنی ارقامِ بعد از اعشار در پایتون ۲ نمایش داده نمی‌شود. این مسئله ممکن است بر نتایج تقسیم و برنامه‌ای که نوشتید، تأثیر منفی بگذارد.

برای مثال، فرض کنید قصد دارید عبارت ۳/۲ را تقسیم کنید. اگر کد تقسیم ۳ بر ۲ را در پایتون ۲ بنویسید، نتیجه‌ تقسیم به‌جای ۱.۵، عدد صحیح ۱ خواهد بود. برای نوشتن این برنامه در پایتون 3 پیشنهاد می‌کنیم (float(x را به‌جای x به‌کار ببرید. همچنین، از بخش from __future__  در پایتون 2 می‌توانید برای دستور تقسیم استفاده کنید. مثال‌های زیر برای درک بهتر این بخش کمکتان خواهد کرد:

دستور تقسیم در Python 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

Output

Python 2.7.6 3 / 2 = 1 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0

دستور تقسیم در Python 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

Python 3.6.1
3 / 2 = 1.5
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0

۳. ذخیره رشته‌ها در پایتون

در بررسی تفاوت پایتون دو و سه به بخش ذخیره رشته‌ها در پایتون می‌رسیم. به‌طور‌پیش‌فرض پایتون ۳ رشته‌ها را به‌صورت یونیکد (aUTF-8) ذخیره می‌کند؛ درحالی‌که برای ذخیره‌کردن رشته‌‌کدها در پایتون ۲، باید از حرف «u» استفاده کرد.

رشته‌های یونیکد در پایتون ۳ درمقایسه‌با رشته‌های پیش‌فرض پایتون ۲ که به‌صورت اسکی (ASCII)  ذخیره می‌شوند، تطبیق‌پذیری چشمگیری دارند؛ زیرا در پایتون ۳، به‌راحتی می‌توانید کدها را به‌صورت زبان خارجی، شکلک، حروف یا اعداد رومی استاندارد رمزگذاری کنید. به مثال زیر توجه کنید:

ذخیره کد در Python 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

ذخیره کد در Python 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

Output

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’>

خروجی ذخیره کد در Python 2

>>> 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

۴. تفاوت پایتون 2 و 3 در نمایش متغیرهای حلقه

برای تکرار حلقه یا For Loop در پایتون ۲، ممکن است نام متغیری که در سراسر کد استفاده می‌کنید، با متغیر نهایی متفاوت باشد. این در حالی‌ است که مشکل مذکور در پایتون ۳ برطرف شده است؛ بنابراین، می‌توانید از نام متغیری که قبلاً استفاده کرده‌اید، بدون نگرانی بابت تغییر مقدار متغیر نهایی به‌عنوان متغیر حلقه (For Loop) نیز به‌کار ببرید. برای درک بهتر این موضوع، به مثال زیر دقت کنید:

کد دستوری در پایتون ۲

#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

Output

Python 2.7.6 before: i = 1 comprehension: [0, 1, 2, 3, 4] after: i = 4

کد دستوری در پایتون ۳

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

Output

Python 3.6.1 before: i = 1 comprehension: [0, 1, 2, 3, 4] after: i = 1

۵. نمایش آرگومان استثناها (Raise Exception)

در پایتون ۳ برای نمایش استثناها، باید آن را مانند زیر داخل پرانتز قرار دهید:

raise IOError(“your error message”)

از کد بالا برای هر دو نسخه پایتون می‌توان استفاده کرد؛ در‌حالی‌که کد زیر فقط برای پایتون ۲ کاربردی خواهد بود. این یعنی برای استفاده از Raise Exception‌ها، فقط در پایتون ۲ می‌توانید آن‌ها را بدون پرانتز به‌کار ببرید:

raise IOError, “your error message”

۶. کتابخانه در نسخه‌های مختلف پایتون

بسیاری از کتابخانه‌های ایجاد‌شده در پایتون ۲ با پایتون ۳ سازگار نیستند و این ناسازگاری باعث ایجاد مشکلاتی در انتقال کتابخانه پایتون ۲ به ۳ شده است. همچنین، اگر قصد دارید پروژه را از نسخه پایتون 2 به پایتون 3 تبدیل کنید، به تغییر تمام کتابخانه‌های پایتون نیاز دارید.

به‌‌دلیل قدیمی‌بودن پایتون ۲، مشکلات موجود در زبان برنامه‌نویسی آن در پایتون ۳ برطرف شده است. بسیاری از توسعه‌دهندگان در حال توسعه کتابخانه‌هایی هستند که فقط با پایتون ۳ می‌توان از آن‌ها استفاده کرد؛ بنابراین، پیش‌بینی می‌شود پایتون ۲ تا چند سال آینده کاملاً بی‌استفاده شود.

نحوه استفاده از کتابخانه پایتون
بررسی تفاوت کتابخانه‌ها در نسخه‌های مختلف پایتون

جدول تفاوت پایتون 2 و 3

با نگاهی به جدول زیر، تفاوت نسخه‌های پایتون را می‌توانید بهتر درک کنید.

پارامتر پایتون 2 پایتون 3
سال انتشار  انتشار در سال ۲۰۰۰ انتشار در سال ۲۰۰۸
عملکرد تابعی مانند Print به‌عنوان دستور و بدون نیاز به پرانتز به‌عنوان تابع و همراه با پرانتز
ذخیره‌ رشته کدها پیش‌فرض به‌صورت اسکی (ASCII) پیش‌فرض به‌صورت یونیکد
تقسیم اعداد صحیح غیربخش‌پذیر حذف اعداد پس از اعشار مقدار صحیح همراه با اعشار
نمایش متغیر حلقه تغییر در مقادیر متغیرها مقادیر متغیر ثابت است
آرگومان Raise Exception  بدون نیاز به پرانتز همراه با پرانتز
کتابخانه ناسازگاری بسیاری از کتابخانه‌ها با فوروارد برخورداری از کتابخانه‌های پیشرفته‌ پایتون

پایتون چه کاربردی دارد و چرا محبوب است؟ برای استفاده بهتر از پایتون به چه نکاتی توجه کنیم؟ در مقاله زیر بخوانید.

پایتون چیست؟

پایتون 2 یا 3؛ کدام نسخه پایتون بهتر است؟

وقتی از تفاوت نسخه‌های پایتون صحبت می‌شود‌، بی‌شک پایتون ۳ نسخه برنده خواهد بود. این قضیه به‌خصوص از سال ۲۰۲۰ و با از دسترس خارج‌شدن پایتون ۲ قطعی شد. علاوه‌براین باتوجه‌به پشتیبانی کمتر از پایتون ۲ و ارتقای پایتون ۳، پیشنهاد می‌کنیم همیشه از نسخه جدید پایتون استفاده کنید.

درک و استفاده راحت‌تر از پایتون ۳، محبوبیت این نسخه را افزایش داده است. با‌این‌حال، ممکن است با پروژه‌ای روبه‌رو شوید که در آن از پایتون 2 استفاده شده است؛ بنابراین، باید به‌عنوان توسعه‌دهنده کار با نسخه قدیمی پایتون را نیز بلد باشید.

تفاوت های پایتون 2 و 3
کدام نسخه از پایتون بهتر است؟

جمع‌بندی

تفاوت پایتون 2 و 3 از عملکرد توابع گرفته تا وضعیت سازگاری کتابخانه‌های هر دو نسخه را شامل می‌شود. در این مطلب از آموزش پایتون بلاگ پارس پک، ۶ تفاوت اصلی نسخه‌های پایتون را بررسی کردیم. پایتون ۲.۷ به‌عنوان آخرین نسخه پایتون در سال ۲۰۲۰ متوقف شد.

پایتون ۳ که در سال ۲۰۰۸ منتشر شد، به‌عنوان زبان برنامه‌نویسی جدیدتر مشکلات نسخه ناسازگار قبلی خود را به‌طور‌کلی از بین برده است. باوجوداین‌، در انتقال پروژه‌ها از پایتون ۲ به پایتون ۳ مشکلاتی وجود دارد که رشد و توسعه پایتون ۳ به‌زودی آن را به جایگزین قدرتمند پایتون ۲ تبدیل خواهد کرد.

به‌نظر شما کدام‌یک از نسخه‌های پایتون کارایی بیشتر و عملکرد قدرتمندی برای برنامه‌نویسان خواهد داشت؟ دیدگاهتان را ازطریق کامنت با ما به‌اشتراک بگذارید.

نسخه جدید پایتون انقلابی در میان برنامه‌نویسان به‌‌پا کرد. برنامه‌نویسانی که پیش‌از‌این کار با پایتون 2 را تجربه کرده بودند، با معرفی نسخه جدید ناچار شدند علاوه‌بر شناخت تفاوت پایتون 2 و 3، دانش برنامه‌نویسی‌شان را به‌روز کنند. از تفاوت در کتابخانه‌های به‌روز پایتون تا به‌کار‌بردن دستورها و متغیرها، برنامه‌نویسی در پایتون ۳ را ساده‌تر کرده است.

سؤالات متداول

۱. تفاوت پایتون 2 و 3 چیست؟

ساده‌ترین و اصلی‌ترین تفاوت نسخه‌های پایتون در دستور Print است؛ زیرا در پایتون ۲ به‌عنوان دستور و در پایتون ۳ به‌عنوان تابع شناخته می‌شود.

۲. کدام‌یک از نسخه‌های پایتون ۲ یا ۳ سریع‌تر است؟

پایتون 3 معمولاً عملکرد سریع‌تری از پایتون ۲ دارد.

۳. آیا می‌توان هر دو نسخه پایتون 2 و 3 را نصب کرد؟

بله، هر دو نسخه را بدون نگرانی بابت تداخل در برنامه‌های آن‌ها می‌توان روی یک کامپیوتر نصب کرد.

۴. آیا پایتون 3 همان CPython است؟

بله، CPython نسخه اصلی و جدید پایتون است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


ارسال دیدگاه در وبلاگ پارس‌پک را مطالعه کرده و آن‌ها را می‌پذیرم.