پایتون ۳ یا ۳۰۰۰ یا py3k نسخه ای از پایتون است که تغییرات زیاد و پایه ای دارد و در کل backward compatibilly ندارد.
فهرست برخی از تغییرات عمده پایتون ۳٫۰ به نقل از ویکی پدیا
- تغییر پرینت چون یک تابع غیر قابل انتقال است نه یک توضیح. این باعث میشود که تغییر یک ماژول برای استفاده از یک تابع پرینت متفاوت، آسان باشد و بنابراین ایجاد نحو منظم تر میشود. در پایتون ۲٫۶ این امکان با تایپ کردن from – future – import print – function فراهم شد.
- اضافه شدن حمایت از یادآوری تابع انتخابی که میتواند برای معرفی تایپ خصوصی یا اهداف دیگر استفاده شود.
- یکسان کردن تایپ str/Unicode، به نمایندگی از یک متن، و معرفی یک تایپ byte تغییر ناپذیر؛ با یک تایپ مطابق با bytearray تغییر پذیر، که هر دو آرایه از بایت را ارائه میکنند.
- از بین بردن خصوصیات سازگاری معکوس، شامل کلاسهای به فرم قبل، قسمت کردن اعداد صحیح، استثناءهای رشتهای، و گزارشهای نسبتاً نا آشکار.
در سایت اصلی پایتون اینگونه نوشته شده است که اگر کارتونو توانستنید با پایتون ۳ انجام دهید. دمتون گرم. ادامه بدهید.
در کل پایتون ۳ با مشکل پشتیبانی محدود کتابخانه ها مواجه است. هنوز library هایی هستند که به python3 port نشده اند.
از طرفی اکثر سرور ها از سری python 2.x پشتیبانی می کنند.
در کل پایتون ۳ زبان کاملی است و پشتیبانی خیلی بهتری از unicode دارد.
از طرفی ابزار هایی مثل 2to3 کمک می کند کد های قدیمیتان را به پایتون ۳ تبدیل کنید (البته نه خیلی راحت)
- 2to3 - Automated Python 2 to 3 code translation — Python v3.0.1 documentation -> http://docs.python.org
چه کتابخانه هایی هنوز به پایتون ۳ منتقل نشده اند؟
Django framework
این فریم ورک طراحی وب هنوز نسخه پایتون ۳ نداده است ولی در برنامه دارند این کار را انجام دهند.
- Django | Weblog | Django\'s future, and Python 3 -> https://www.djangoproject.com
خبری در hackernews هست که بیشتر زمان را مشخص می کند. هرچند خیلی رسمی نیست
- I would love to use 3.x but went with 2.7.x as I need Django, and cx_Oracle. Dja... | Hacker News -> http://news.ycombinator.com
- دیگر کتابخانه ها:
- gevent - Python networking library based on greenlet and libevent - Google Project Hosting -> http://code.google.com
- Python Imaging Library (PIL) -> http://www.pythonware.com
- Twisted -> http://twistedmatrix.com
البته یک سری از کتابخانه ها به صورت غیر رسمی port شده اند.
- Some unofficial binaries are available for Python 3 PIL -> http://www.lfd.uci.edu
کتابخانه مهمی که به پایتون ۳ منتقل شده اند
- PySide - PythonInfo Wiki -> http://wiki.python.org
- PyGObject - GNOME Live! -> https://live.gnome.org
- PyQt4 - PythonInfo Wiki -> http://wiki.python.org
- py2exe.org -> http://www.py2exe.org
- CherryPy — A Minimalist Python Web Framework -> http://www.cherrypy.org
- Pylons Project : Home -> http://www.pylonsproject.org
مقایسه در کد
Old: print \"The answer is\", 2*2 New: print(\"The answer is\", 2*2) Old: print x, # Trailing comma suppresses newline New: print(x, end=\" \") # Appends a space instead of a newline Old: print # Prints a newline New: print() # You must call the function! Old: print >>sys.stderr, \"fatal error\" New: print(\"fatal error\", file=sys.stderr) Old: print (x, y) # prints repr((x, y)) New: print((x, y)) # Not the same as print(x, y)!
- What’s New In Python 3.0 — Python v3.0.1 documentation -> http://docs.python.org
نتیجه گیری
در کل پایتون ۲ با پایتون ۳ تفاوت خیلی زیادی در کد ندارند و برنامه نویس پایتون ۲ به راحتی می تواند پایتون ۳ را یاد بگیرد. اما منابع آموزشی مربوط به پایتون ۲ بسیار زیاد تر. ابزار بیشتر و ... دارند.
توصیه آخرم این است که تازه وارد ها با پایتون ۲ کار کنند و فقط از پایتون ۳ استفاده کنند که دقیقا می دانند می خواهند چه استفاده ای از پایتون ۳ بکنند. یعنی تمامی نیاز مندی کارشان را در نظر بگیرند.
مقالات مرتبط
- Let\'s talk about Python 3.0 -> http://www.b-list.org
- Pros and Cons about Python 3 | Armin Ronacher\'s Thoughts and Writings -> http://lucumr.pocoo.org
- Python2orPython3 - PythonInfo Wiki -> http://wiki.python.org
- Python 2 vs Python 3 and Tutorial - Stack Overflow -> http://stackoverflow.com
- Should I learn Python 2 before 3, or start directly from Python 3? - Stack Overflow -> http://stackoverflow.com
- Differences between Python 2.x and Python 3.x | Intro to Computers & Programming -> http://py.onepotcooking.com