پایتون ۲ یا ۳

پایتون ۳ یا ۳۰۰۰ یا py3k نسخه ای از پایتون است که تغییرات زیاد و پایه ای دارد و در کل backward compatibilly ندارد.

فهرست برخی از تغییرات عمده پایتون ۳ به نقل از ویکیپدیا

تغییر پرینت چون یک تابع غیر قابل انتقال است نه یک توضیح. این باعث می‌شود که تغییر یک ماژول برای استفاده از یک تابع پرینت متفاوت، آسان باشد و بنابراین ایجاد نحو منظم تر می‌شود. در پایتون ۲٫۶ این امکان با تایپ کردن from – future – import print – function فراهم شد. اضافه شدن حمایت از یادآوری تابع انتخابی که می‌تواند برای معرفی تایپ خصوصی یا اهداف دیگر استفاده شود. یکسان کردن تایپ str/Unicode، به نمایندگی از یک متن، و معرفی یک تایپ byte تغییر ناپذیر؛ با یک تایپ مطابق با bytearray تغییر پذیر، که هر دو آرایه از بایت را ارائه می‌کنند. از بین بردن خصوصیات سازگاری معکوس، شامل کلاس‌های به فرم قبل، قسمت کردن اعداد صحیح، استثناءهای رشته‌ای، و گزارش‌های نسبتاً نا آشکار.

در سایت اصلی پایتون اینگونه نوشته شده است که اگر کارتونو توانستنید با پایتون ۳ انجام دهید. دمتون گرم. ادامه بدهید.

در کل پایتون ۳ با مشکل پشتیبانی محدود کتابخانه ها مواجه است. هنوز کتابخانه‌هایی هستند که به پایتون ۳ port نشده‌اند. از طرفی اکثر سرور ها از سری python 2.x پشتیبانی می کنند. در کل پایتون ۳ زبان کاملی است و پشتیبانی خیلی بهتری از unicode دارد. از طرفی ابزار هایی مثل 2to3 کمک می کند کد های قدیمیتان را به پایتون ۳ تبدیل کنید (البته نه خیلی راحت)

2to3 - Automated Python 2 to 3 code translation

چه کتابخانه هایی هنوز به پایتون ۳ منتقل نشده اند؟

gevent - Python networking library

Twisted

البته یک سری از کتابخانه ها به صورت غیر رسمی port شده‌اند:

Some unofficial binaries are available for Python 3 PIL

کتابخانه مهمی که به پایتون ۳ منتقل شده‌اند:

Django‎

PySide

PyGObject

PyQt4

py2exe

CherryPy — A Minimalist Python Web Framework

Pylons Project

Python Imaging Library (PIL)‎

مقایسه در کد

قدیمی:

print "The answer is", 2 * 2
print x,           # Trailing comma suppresses newline
print              # Prints a newline
print >> sys.stderr, "fatal error"
print (x, y)       # prints repr((x, y))

جدید:

print("The answer is", 2 * 2)
print(x, end=" ")  # Appends a space instead of a newline
print()            # You must call the function!
print("fatal error", file=sys.stderr)
print((x, y))      # Not the same as print(x, y)!

What’s New in Python

نتیجه گیری

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

مقالات مرتبط

How to support both Python 2 and 3

How CherryPy supports Python 2 and 3

($) Porting to Python 3 - The Book Site

Let's talk about Python 3.0

Pros and Cons about Python 3

Python2orPython3

Python 2 vs Python 3 and Tutorial

Should I learn Python 2 before 3, or start directly from Python 3?

Differences between Python 2.x and Python 3.x