نشریه‌ی الکترونیکی رایانا

گروه کامپیوتر مرکز راهنمایی علامه حلی یک تهران

نشریه‌ی الکترونیکی رایانا

گروه کامپیوتر مرکز راهنمایی علامه حلی یک تهران

نشریه‌ی الکترونیکی رایانا
طبقه بندی موضوعی
آخرین نظرات

پایتون 2؟! پایتون 3؟! ...؟!

سه شنبه, ۱۴ ارديبهشت ۱۳۹۵، ۰۱:۰۰ ب.ظ

پایتون 2 در سال 2000 به عنوان یک نسخه پایدار از پایتون عرضه شد. این نسخه از محبوبیت بسیار بالایی برخوردار شد به طوری که وقتی در سال 2008 نسخه سوم پایتون عرضه شد، بسیاری از برنامه نویسان حاضر نشدند به آن رضایت دهند و با همان نسخه ی دوست داشتنی 2 کدزنی را ادامه دادند. حتّی امروز و در سال 2016 زمانی که 8 سال از انتشار نسخه 3 پایتون می گذرد هنوز هم بسیاری از توسعه دهندگان با پایتون 2 کار می کنند.

در اینجا به چند آمار از استفاده کنندگان این دو نسخه پرداختیم و سپس چند تفاوت که شاید کار شما را در انتقال از پایتون 3 به پایتون 2 راه بیاندازد را گفته ایم.

در سال 2014 تقریبا افرادی که در ابتدای پروژه شان پایتون 3 را انتخاب می کردند با افرادی که پایتون 2 را ترجیح می دادند برابر است، البتّه کمی تعداد افرادی که پایتون 2 را ترجیح می دادند بیشتر است. این نکته را هم در نظر داشته باشید که بعضی افراد بدلیل نبودن ابزارهای کافی و کتابخانه ها در اواسط پروژه شان مجبور می شوند کدهایشان را به پایتون 2 تبدیل کنند!

در سال 2013 میزان افرادی که حداقل یکبار کد برنامه شان را از پایتون 2 به 3 انتقال داده اند 33% از جامعه آماری بوده که در سال 2014 این رقم به 38% رسیده است.

59% از برنامه نویسان پایتون 2 گفته اند اگر مشکل ابزارهای وابسته پایتون 3 حل شود سراغ آن خواهند رفت، 41% از آن ها گفته اند انگیزه ای برای استفاده از پایتون 3 ندارند و همچنین طولانی بودن قالب و اساس کدها و 10% باقی مانده هم مدیریت انتقال از نسخه قدیمی به نسخه جدید را موثّر دانسته اند.

امّا با وجود آمارهای استفاده تنها 12% از پایتون کاران معتقدند انتشار پایتون 3 یک اشتباه بوده. 34% معتقد بوده اند اشتباه نبوده و 54% معتقد بوده اند که اشتباه نبوده ولی بهتر بود اگر این انتقال بتدریج صورت می گرفت نه به شکل یک جهش.

در سال 2013 78% از پایتونی ها بیشتر در پایتون 2 کد می زده اند که تنها پس از یک سال این رقم 10% کاهش داشته است. این روند می تواند برای بنیاد توسعه دهندگان پایتون یک امید باشد که روزی همه پایتونی ها از نسخه جدید استفاده کنند. البتّه به علّت این محبوبیت پایتون 2 هنوز بنیاد پایتون، پایتون 2 را در کنار پایتون 3 توسعه می دهد و نسخه های جدیدی از آن را منتشر می کند.

طبق آمارها شمار افرادی که با پایتون 2 آشنا هستند و تاکنون حداقل یکبار در آن کد زده اند با وجود این که بالاست امّا در حال افزایش نیست. ولی در طی یک سال شمار این افراد برای پایتون 3 12% افزایش داشته است.

بنیاد پایتونی ها ابزاری به نام 2to3 را منتشر کرده است که کد پایتون 2 را به پایتون 3 تبدیل می کند. کمی پس از این انتشار طرفداران پایتون 2 هم ابزاری به نام 3to2 منتشر کردند که البتّه چندان معروف و محبوب نیست. این که افراد بیشتر به انتقال کد از پایتون 2 به 3 نیاز دارند نشان می دهد کم کم برنامه نویسان در حال روی آوردن به نسخه سوم پایتون هستند.

این هم آمار استفاده از نسخه های مختلف پایتون که در ابتدا 2.7 و سپس 3.4 محبوب ترین نسخه ها هستند.

و در آخر از هر سه برنامه نویس پایتون تنها یک نفر برنامه اش را چند نسخه ای (multi-version) نوشته است. جالب تر این است که از سال 2013 تا 2014 این رقم حتّی کاهش هم داشته است.

و حالا چند تفاوت:

شاید تفاوت در گذاشتن پرانتز پس از print شناخته شده ترین تغییر پایتون 3 نسبت به پایتون 2 باشد.

print "Hello Helli"

print ("Hello Helli")

دومین تفاوت کلیدی تفاوت در تقسیم است. عملگر / به طور پیشفرض در پایتون 2 عمل تقسیم صحیح را انجام می دهد مگر اینکه در a / b یکی از a و b  اعشاری باشد که در آنصورت تقسیم اعشاری انجام می شود. در حالی که عملگر // در پایتون 2 در هر شرایطی تقسیم صحیح انجام می دهد.

در پایتون 3 تفاوت این است که عملگر / تقسیم اعشاری می کند و عملگر // تقسیم صحیح.

c = a / float(b)

c = a / b

*نکته: اگر در برنامه ای که با پایتون 2 نوشته اید می خواهید از قواعد عملگرهای تقسیم پایتون 3 استفاده کنید، کافی است از آینده عملگر تقسیم را import کنید! این کار با نوشتن خط زیر در ابتدای برنامه امکان پذیر است.

from __future__ import division

پایتون 2 بعضی مقادیر که جنسشان یکسان نبود را بطور هوشمندانه ای جمع می کرد، امّا پایتون 3 همجنس کردن دو مقدار را به عهده کاربر گذاشته است. برای مثال پایتون 2 توانایی جمع bytearray و string را داشت ولی پایتون 3 در مواجهه با این عمل TypeError می دهد.

s = "Hello" + b" Helli"

c = "Hello" + str(b" Helli")[2:-1]

در پایتون 2، استفاده از range به معنای ساخت یک داده ساختار (DS یا Data Structure) به نام لیست (list) بود که حجم قابل توجّهی از حافظه را به خود اختصاص می داد. در حلقه های for برای این که این داده ساختار پیچیده ساخته نشود تا اسیر محدودیت حافظه و دیگر مشکلاتش نشویم از دستور دیگری به نام xrange استفاده می شود. در پایتون 3 دستور xrange حذف شد و بجای آن range دقیقا همان کار xrange را می کند، و اگر بخواهید به معادل range پایتون 2، در پایتون 3 دسترسی داشته باشید باید از (()list(range استفاده کنید.

for i in xrange(10000):
a = b

for i in range(10000):
a = b

در پایتون 2 دستور input نمی توانست رشته ها را بخواند. (دستور input مثل عملیاتی که (()eval(input در پایتون انجام می دهد، را انجام می دهد.) برای اینکه در پایتون 2 بتوانیم رشته ها را بخوانیم یا به رشته خام عدد ورودی دسترسی داشته باشیم باید از raw_input استفاده می کردیم. در پایتون 3 یکی از تغییرات خوشایند همین است که input مثل raw_input در پایتون 2 رشته خام می گیرد. (raw_input در پایتون 3 حذف شده است.)

myString = raw_input() 

myString = input()

منابع: 

www.randalolson.com

www.sebastianraschka.com

www.learntocodewith.me

۹۵/۰۲/۱۴
مهدی امیری

python

پایتون

نظرات  (۲)

۱۵ ارديبهشت ۹۵ ، ۱۴:۱۶ فاروق کریمی زاده
جالب بود!
من خودم دوست دارم با پایتون 3 بنویسم.و البته فکر میکنم نباید یکهو و بصورت جهشی از پایتون 2 به 3 میرفتند.
نتایج مسابقه 3 چی شد؟
پاسخ:
قرار گرفت

ارسال نظر

نظر دادن تنها برای اعضای بیان ممکن است.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.