View Full Version : سوال: python 2.x یا python3.x
sgb110
چهارشنبه 11 اسفند 1389, 23:27 عصر
سلام
من با پایتون 2.6 کار می کنم
به خاطر اینکه خیلی از ماژول ها برای پایتون 3 آماده نبودند، سراغ این نسخه نرفته بودم
اما امروز یه مورد جالب(حداقل برای خودم) دیدم:
یه برنامه که فاکتوریل عدد 100000 رو حساب می کرد(به کمک ماژول math)
کدی که نوشته بودم تو پایتون 2.6 حدود 15 ثانیه رو پایتون 2.7 حدود 5 ثانیه و رو پایتون 3.2 کمتر از یک ثانیه جواب داد!!!!!
حالا سوالم این هست که واقعا اینقدر مفسر پایتون تو این نسخه های جدید بهینه شدند؟؟
در ضمن یکسری از ماژول هایی که واسه نسخه 3 آماده نشدند ،راهی وجود داره که ازشون رو این نسخه استفاده کرد؟
rightsum
جمعه 20 اسفند 1389, 10:25 صبح
سلام دوست عزیز
می تونی سورس اون برنامه رو قرار بدی ؟!
MSK
شنبه 21 اسفند 1389, 07:27 صبح
سلام بر شما دوست عزیز.
تفاوت مفسرها اینقدر نیست. بلکه رویکردها عوض شده که باعث میشه بعضی وقتا نتایج شگفت انگیز یشند!
درضمن برنامه ی 2to3 هم همراه python3 عرضه میشه که کار تبدیل کدها از ۲ به ۳ رو انجام میده. البته معمولا بعد از اجرای این اسکریبت تنظیم و تغییراتی دستی هم برای انجام دادن میمونه که چون ۲ با ۳ خیلی تفاوت ندارند انجامشون کار خیلی سختی نیست.
در هر صورت من فکر می کنم الان دیگه انقدر ۳ گسترش بیدا کرده که بشه رفت سراغش.
sgb110
چهارشنبه 25 اسفند 1389, 15:43 عصر
سلام
ببخشید یه مدت دسترسی به اینترنت نداشتم
ممنون از پاسختون
من یه کد رو تو دو تا مفسر اجرا کردم،برا همین هم اینقدر تعجب کردم
import time
import math
t1=time.time()
x=math.factorial(100000)
t2=time.time()
print(t2-t1)
eshpilen
پنج شنبه 26 اسفند 1389, 18:58 عصر
من یک بار همچین اشتباهی رو کردم. یعنی رفتم بجای آخرین نسخهء یه چیزی، نسخه ای رو که هنوز متداول بود یاد گرفتم، چون نسخهء جدیدش هنوز فراگیر نشده بود. یادگیری من که تموم شده نسخهء جدید متداول شده بود!! البته نه اینکه بگم یادگیریم هدر رفت، اما خب راه بهینه ای نبود.
همیشه آخرین نسخه رو یاد بگیرید و کار کنید. اکثرا این مناسب تر هست.
پایتون 3 هم مسلما از 2 بهتره تاجایی که بنده دیدم و میدونم. هم از نظر بهینه سازی های درونی و هم از نظر سینتاکس و ساختار و کلاسها و غیره که تفاوتهایی هرچند نه چندان زیاد داشته.
----------------
البته این رفرنس پایتون 3 بدجوری ساختار نامانوسی داره. دنبال یه چیزی میگردی جونت رو به لبت میرسونه. ولی چون بنده از اول تا آخر مثل کتاب خوندمش زیاد مشکل نداشتم. نمیدونم رفرنس پایتون 3 اینطور هست یا پایتون 2 هم به همین صورت هست. خلاصه حواست باشه زده نشی!! باید دقت کنی ببینی منطقش چی هست و چطوری اجزای زبان رو طبقه بندی کرده.
sgb110
جمعه 27 اسفند 1389, 01:05 صبح
من یک بار همچین اشتباهی رو کردم. یعنی رفتم بجای آخرین نسخهء یه چیزی، نسخه ای رو که هنوز متداول بود یاد گرفتم، چون نسخهء جدیدش هنوز فراگیر نشده بود. یادگیری من که تموم شده نسخهء جدید متداول شده بود!! البته نه اینکه بگم یادگیریم هدر رفت، اما خب راه بهینه ای نبود.
همیشه آخرین نسخه رو یاد بگیرید و کار کنید. اکثرا این مناسب تر هست.
سلام
مرسی از پاسختون.
اما تا اونجا که من می دونم پایتون 2 و 3 تو تا پروژه موازی هم هستند. منظورم این هست که پایتون 3 نسخه بعدی پایتون 2 نیست(البته شاید من بد متوجه شدم)
m.soleimani
جمعه 27 اسفند 1389, 02:11 صبح
یکی از دلایلی که این زبان برنامه نویسی که به نظر من یکی از مناسبترینها برای شروع هست زیاد مورد توجه قرار نمیگیره همین عدم هماهنگیهاست ولی منم با دوستمون موافق هستم که اگر شما نسخه جدید رو شروع به یادگیریش بکنید بهتر هست چون در آینده نسخه قدیمی مورد استفاده شما به احتمال زیاد از دور خارج خواهد شد به هر حال این به سلیقه شما بر میگرده موفق باشید./
sgb110
جمعه 27 اسفند 1389, 12:54 عصر
یکی از دلایلی که این زبان برنامه نویسی که به نظر من یکی از مناسبترینها برای شروع هست زیاد مورد توجه قرار نمیگیره همین عدم هماهنگیهاست ولی منم با دوستمون موافق هستم که اگر شما نسخه جدید رو شروع به یادگیریش بکنید بهتر هست چون در آینده نسخه قدیمی مورد استفاده شما به احتمال زیاد از دور خارج خواهد شد به هر حال این به سلیقه شما بر میگرده موفق باشید./
سلام
من الان نزدیک 2 سال هست که پایتون کار می کنم(نمی خوام شروع به یاد گیری کنم) ولی به هر حال از جوابتون ممنونم
منم با این قضیه که نسخه آخر استفاده بشه موافقم
اما مثلا پارسال که می خواستم با django کار کنم با پایتون 2.6 کار می کرد(الان رو نمی دونم)
ببینید مشکل من تغییرات کمی که تو سینتکس ها بوجود اومده نیست.مشکل اساسی یه سری ماژول و کتابخونه هستند که واسه پایتون 3 پیدا نکردم.
مثلا من الان وسط یه پروژه هستم که توش از qwt دارم استفاده می کنم.و pyqwt این جور که من تو سایتش دیدم با پایتون 2.6 کار می کنه.
راهی هست از این کتابخونه ها تو پایتون 3 استفاده کرد؟
m.soleimani
جمعه 27 اسفند 1389, 19:03 عصر
راهی هست از این کتابخونه ها تو پایتون 3 استفاده کرد؟
اگر خیلی لازم هستن خودتون برای نسخه تازه آمادشون کنید که البته منطقی نیست ولی چون اپنسورس هست به خوبی امکان پذیر هست
در مورد تفاوتهای بدون قانون هم رابطه مستقیم با دنیای اپنسورس داره. اینا که یه شرکت نیستن با هدف فلان چیز رو به دست آوردن اگر از موضوعی خوششون نیاد کنارش میزارن و میرن سراغ اونی که به نظرشون مهمتر هست و بهش نیاز دارن ولی یه شرکت برنامه نویسی باید به هدفش برسه تا پروژه شکست نخوره و به نتیجه مالی خودش برسه همین بزرگترین اختلاف بین طرفداران اپنسورس و مخالفهاش هست و شما هم توی پروژههای اپنسورس نمیتونی به کسی گیر بدی که پس چی شد این همه آدم رو گذاشتین سر کار دیگه اینو ادامه نمیدین چون شما برای اون پولی ندادین که حق شکایت کردن رو داشته باشین./
MSK
جمعه 27 اسفند 1389, 19:22 عصر
سلام؛
ورژن های ۲.۶ و ۲.۷ از python به منظور ایجاد سازگازی بیشتر با سری ۳ و راحتتر کردن پروسه انتقال کدها به سری سوم زبان ایجاد شدند و درضمن تصمیم بر این گرفته شده که سری ۲.۷ آخرین سری از سری ۲ باشه و پشتیبانی آن فقط بصورت maintenance و رفع باگ باشه.
The Python 2.7 series is scheduled to be the last major version in the 2.x series before 2.x moves into an extended maintenance period. This release contains many of the features that were first released in Python 3.1.
http://www.python.org/download/releases/2.7.1/
پس من به این نتیجه می رسم که انتقال به ۳ یک انتخاب نیست. بلکه یک الزامه.:چشمک:
در ضمن من در مورد کد اونو این شکلی تقییرش دادم و تست کردم:
import math
x=math.factorial(100000)
نتایج:
msk@msk-VGNCS390JBB:~$ python2.6 --version
Python 2.6.6
msk@msk-VGNCS390JBB:~$ time python2.6 fact_test_1.py
real 0m27.894s
user 0m26.590s
sys 0m0.980s
msk@msk-VGNCS390JBB:~$ python2.7 --version
Python 2.7.1+
msk@msk-VGNCS390JBB:~$ time python2.7 fact_test_1.py
real 0m7.185s
user 0m6.790s
sys 0m0.000s
msk@msk-VGNCS390JBB:~$ python3.2 --version
Python 3.2
msk@msk-VGNCS390JBB:~$ time python3.2 fact_test_1.py
real 0m0.491s
user 0m0.480s
sys 0m0.000s
msk@msk-VGNCS390JBB:~$
و یک تست دیگه با این کد تا فقط performance خود مفسرها رو ببینم*:
x=2
for i in xrange(3, 100001):
x *= i
(البته python3 دستور xrange نداره و range معادل همونه که من در تست ها جایگزین کردم.)
و نتایج:
msk@msk-VGNCS390JBB:~$ time python2.6 fact_test_2.py
real 0m28.225s
user 0m26.830s
sys 0m0.870s
msk@msk-VGNCS390JBB:~$ time python2.7 fact_test_2.py
real 0m6.827s
user 0m6.800s
sys 0m0.010s
msk@msk-VGNCS390JBB:~$ time python3.2 fact_test_2.py
real 0m8.656s
user 0m7.820s
sys 0m0.800s
msk@msk-VGNCS390JBB:~$
پس نتیجه می گیریم:
xrange از ۲.۶ به ۲.۷ کلی بهینه سازی شده و از ۲.۷ به ۳.۲ فرق چندانی نکرده(اگه بدتر نشده باشه)
الگوریتم math.factorial در ۲.۶ و ۲.۷ همون اگوریتم ساده لوحانه ضربه ولی در ۳.۲ یک الگوریتم درست حسابی پیاده سازی شده.
نتیجه گیری اخلاقی:
اگه ۲.۶ یا قدیمی تر کار می کنید حتما به فکر ارتقا باشید.
۲.۷ ورژن خوبیه ولی باید حواستون باشه که احتمالا ۲.۸ ای درکار نخواهد بود و آبنده یعنی ورژن ۳!:لبخند:
موفق باشید.
sgb110
جمعه 27 اسفند 1389, 23:21 عصر
سلام
نتیجه گیری اخلاقی:
اگه ۲.۶ یا قدیمی تر کار می کنید حتما به فکر ارتقا باشید.
۲.۷ ورژن خوبیه ولی باید حواستون باشه که احتمالا ۲.۸ ای درکار نخواهد بود و آبنده یعنی ورژن ۳!
یه جوری صحبت می کنید که آدم یاد تفاوت بین ویبی 6 با ویبی دات نت می افته!!!
فکر نمی کنم کوچ کردن از 2 به 3 اینقدر ها هم زمان بر و پر هزینه باشه(اگر ماژول ها و کتابخونه ها مشکل ایجاد نکنند)
ولی فکر می کنم با بیشتر جا افتادن ورژن 3 کم کم کتابخونه ها هم کامل بشن اما تا اون موقع چی کار باید کرد؟؟؟
MSK
شنبه 28 اسفند 1389, 22:12 عصر
من خودم چند دفعه سعی کردم کوچ کنم به python 3؛ اما به محض اینکه تصمیم بگیری یه کار درست حسابی بکنی. یعنی نیاز به یک کتابخونه ی بزرگ مثل PyQt یا PyGTK پیدا می کنی و این هم یعنی فعلا مجبوری به همون python 2 بچسبی.
تفاوت از python 2 به 3 تفاوت ساختاری نیست؛ تفاوت رویکردیه. توی سری دوم شعار این بود که برای نوشتن یک برنامه به تعداد برنامه نویسان روی زمین راه وجود داره! یعنی به اضافه کردن امکانات می پرداختند. اما مثل اینکه به این نتیجه رسیدند که این کار خوبی نبوده: مثلا یه برنامه نویس تازه کار کافی بود بنویسه for i in range(1000000000): pass و خوب دیگه python بدرد نمی خوره!! بریم سراغ یه زبان درست حسابی! یعنی برخلاف شعار اصلی python یعنی سادگی. سیکل یادگیری زبان خیلی هم طولانی شده بود که باعث شد این حرکت از ۲ به ۳ انجام بشه.
در هر صورت من تفاوت بین دو و سه رو مثل تفاوت دوتا لهجه از یه زبان میبینم که میشه هردو رو همزمان یادگرفت.
موفق باشید.
javadtaghavi
شنبه 16 مهر 1401, 10:41 صبح
سلام رفیق
لزوما مفسر پایتون خیلی قوی نشده بلکه ممکنه در نسخه های جدید اون کتابخونه ای یا ماژولی که استفاده میکنی ازش بهینه تر کدنویسی شده باشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.