نمایش نتایج 1 تا 13 از 13

نام تاپیک: python 2.x یا python3.x

  1. #1

    python 2.x یا python3.x

    سلام

    من با پایتون 2.6 کار می کنم
    به خاطر اینکه خیلی از ماژول ها برای پایتون 3 آماده نبودند، سراغ این نسخه نرفته بودم
    اما امروز یه مورد جالب(حداقل برای خودم) دیدم:
    یه برنامه که فاکتوریل عدد 100000 رو حساب می کرد(به کمک ماژول math)
    کدی که نوشته بودم تو پایتون 2.6 حدود 15 ثانیه رو پایتون 2.7 حدود 5 ثانیه و رو پایتون 3.2 کمتر از یک ثانیه جواب داد!!!!!
    حالا سوالم این هست که واقعا اینقدر مفسر پایتون تو این نسخه های جدید بهینه شدند؟؟
    در ضمن یکسری از ماژول هایی که واسه نسخه 3 آماده نشدند ،راهی وجود داره که ازشون رو این نسخه استفاده کرد؟

  2. #2

    نقل قول: python 2.x یا python3.x

    سلام دوست عزیز
    می تونی سورس اون برنامه رو قرار بدی ؟!

  3. #3
    کاربر دائمی آواتار MSK
    تاریخ عضویت
    تیر 1383
    محل زندگی
    فعلا تهران - بعدا خدا می‌دونه!
    پست
    331

    نقل قول: python 2.x یا python3.x

    سلام بر شما دوست عزیز.
    تفاوت مفسرها اینقدر نیست. بلکه رویکردها عوض شده که باعث میشه بعضی وقتا نتایج شگفت انگیز یشند!

    درضمن برنامه ی 2to3 هم همراه python3 عرضه میشه که کار تبدیل کدها از ۲ به ۳ رو انجام میده. البته معمولا بعد از اجرای این اسکریبت تنظیم و تغییراتی دستی هم برای انجام دادن میمونه که چون ۲ با ۳ خیلی تفاوت ندارند انجامشون کار خیلی سختی نیست.

    در هر صورت من فکر می کنم الان دیگه انقدر ۳ گسترش بیدا کرده که بشه رفت سراغش.

  4. #4

    نقل قول: python 2.x یا python3.x

    سلام
    ببخشید یه مدت دسترسی به اینترنت نداشتم
    ممنون از پاسختون
    من یه کد رو تو دو تا مفسر اجرا کردم،برا همین هم اینقدر تعجب کردم


    import time
    import math
    t1=time.time()
    x=math.factorial(100000)
    t2=time.time()
    print(t2-t1)

  5. #5

    نقل قول: python 2.x یا python3.x

    من یک بار همچین اشتباهی رو کردم. یعنی رفتم بجای آخرین نسخهء یه چیزی، نسخه ای رو که هنوز متداول بود یاد گرفتم، چون نسخهء جدیدش هنوز فراگیر نشده بود. یادگیری من که تموم شده نسخهء جدید متداول شده بود!! البته نه اینکه بگم یادگیریم هدر رفت، اما خب راه بهینه ای نبود.
    همیشه آخرین نسخه رو یاد بگیرید و کار کنید. اکثرا این مناسب تر هست.
    پایتون 3 هم مسلما از 2 بهتره تاجایی که بنده دیدم و میدونم. هم از نظر بهینه سازی های درونی و هم از نظر سینتاکس و ساختار و کلاسها و غیره که تفاوتهایی هرچند نه چندان زیاد داشته.

    ----------------

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

  6. #6

    نقل قول: python 2.x یا python3.x


    من یک بار همچین اشتباهی رو کردم. یعنی رفتم بجای آخرین نسخهء یه چیزی، نسخه ای رو که هنوز متداول بود یاد گرفتم، چون نسخهء جدیدش هنوز فراگیر نشده بود. یادگیری من که تموم شده نسخهء جدید متداول شده بود!! البته نه اینکه بگم یادگیریم هدر رفت، اما خب راه بهینه ای نبود.
    همیشه آخرین نسخه رو یاد بگیرید و کار کنید. اکثرا این مناسب تر هست.
    سلام
    مرسی از پاسختون.

    اما تا اونجا که من می دونم پایتون 2 و 3 تو تا پروژه موازی هم هستند. منظورم این هست که پایتون 3 نسخه بعدی پایتون 2 نیست(البته شاید من بد متوجه شدم)

  7. #7
    کاربر دائمی آواتار m.soleimani
    تاریخ عضویت
    دی 1386
    محل زندگی
    اصفهان
    پست
    639

    نقل قول: python 2.x یا python3.x

    یکی از دلایلی که این زبان برنامه نویسی که به نظر من یکی از مناسب‌ترین‌ها برای شروع هست زیاد مورد توجه قرار نمی‌گیره همین عدم هماهنگی‌هاست ولی منم با دوستمون موافق هستم که اگر شما نسخه جدید رو شروع به یادگیریش بکنید بهتر هست چون در آینده نسخه قدیمی مورد استفاده شما به احتمال زیاد از دور خارج خواهد شد به هر حال این به سلیقه شما بر می‌گرده موفق باشید./

  8. #8

    نقل قول: python 2.x یا python3.x

    نقل قول نوشته شده توسط m.soleimani مشاهده تاپیک
    یکی از دلایلی که این زبان برنامه نویسی که به نظر من یکی از مناسب‌ترین‌ها برای شروع هست زیاد مورد توجه قرار نمی‌گیره همین عدم هماهنگی‌هاست ولی منم با دوستمون موافق هستم که اگر شما نسخه جدید رو شروع به یادگیریش بکنید بهتر هست چون در آینده نسخه قدیمی مورد استفاده شما به احتمال زیاد از دور خارج خواهد شد به هر حال این به سلیقه شما بر می‌گرده موفق باشید./
    سلام
    من الان نزدیک 2 سال هست که پایتون کار می کنم(نمی خوام شروع به یاد گیری کنم) ولی به هر حال از جوابتون ممنونم
    منم با این قضیه که نسخه آخر استفاده بشه موافقم
    اما مثلا پارسال که می خواستم با django کار کنم با پایتون 2.6 کار می کرد(الان رو نمی دونم)
    ببینید مشکل من تغییرات کمی که تو سینتکس ها بوجود اومده نیست.مشکل اساسی یه سری ماژول و کتابخونه هستند که واسه پایتون 3 پیدا نکردم.
    مثلا من الان وسط یه پروژه هستم که توش از qwt دارم استفاده می کنم.و pyqwt این جور که من تو سایتش دیدم با پایتون 2.6 کار می کنه.

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

  9. #9
    کاربر دائمی آواتار m.soleimani
    تاریخ عضویت
    دی 1386
    محل زندگی
    اصفهان
    پست
    639

    نقل قول: python 2.x یا python3.x

    راهی هست از این کتابخونه ها تو پایتون 3 استفاده کرد؟
    اگر خیلی لازم هستن خودتون برای نسخه تازه آمادشون کنید که البته منطقی نیست ولی چون اپن‌سورس هست به خوبی امکان پذیر هست

    در مورد تفاوت‌های بدون قانون هم رابطه مستقیم با دنیای اپن‌سورس داره. اینا که یه شرکت نیستن با هدف فلان چیز رو به دست آوردن اگر از موضوعی خوششون نیاد کنارش می‌زارن و میرن سراغ اونی که به نظرشون مهم‌تر هست و بهش نیاز دارن ولی یه شرکت برنامه نویسی باید به هدفش برسه تا پروژه شکست نخوره و به نتیجه مالی خودش برسه همین بزرگ‌ترین اختلاف بین طرفداران اپن‌سورس و مخالف‌هاش هست و شما هم توی پروژه‌های اپن‌سورس نمی‌تونی به کسی گیر بدی که پس چی شد این همه آدم رو گذاشتین سر کار دیگه اینو ادامه نمی‌دین چون شما برای اون پولی ندادین که حق شکایت کردن رو داشته باشین./

  10. #10
    کاربر دائمی آواتار MSK
    تاریخ عضویت
    تیر 1383
    محل زندگی
    فعلا تهران - بعدا خدا می‌دونه!
    پست
    331

    نقل قول: python 2.x یا python3.x

    سلام؛
    ورژن های ۲.۶ و ۲.۷ از 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:~$


    پس نتیجه می گیریم:

    1. xrange از ۲.۶ به ۲.۷ کلی بهینه سازی شده و از ۲.۷ به ۳.۲ فرق چندانی نکرده(اگه بدتر نشده باشه)
    2. الگوریتم math.factorial در ۲.۶ و ۲.۷ همون اگوریتم ساده لوحانه ضربه ولی در ۳.۲ یک الگوریتم درست حسابی پیاده سازی شده.

    نتیجه گیری اخلاقی:

    1. اگه ۲.۶ یا قدیمی تر کار می کنید حتما به فکر ارتقا باشید.
    2. ۲.۷ ورژن خوبیه ولی باید حواستون باشه که احتمالا ۲.۸ ای درکار نخواهد بود و آبنده یعنی ورژن ۳!

    موفق باشید.

  11. #11

    نقل قول: python 2.x یا python3.x

    سلام
    نتیجه گیری اخلاقی:

    1. اگه ۲.۶ یا قدیمی تر کار می کنید حتما به فکر ارتقا باشید.
    2. ۲.۷ ورژن خوبیه ولی باید حواستون باشه که احتمالا ۲.۸ ای درکار نخواهد بود و آبنده یعنی ورژن ۳!

    یه جوری صحبت می کنید که آدم یاد تفاوت بین ویبی 6 با ویبی دات نت می افته!!!
    فکر نمی کنم کوچ کردن از 2 به 3 اینقدر ها هم زمان بر و پر هزینه باشه(اگر ماژول ها و کتابخونه ها مشکل ایجاد نکنند)
    ولی فکر می کنم با بیشتر جا افتادن ورژن 3 کم کم کتابخونه ها هم کامل بشن اما تا اون موقع چی کار باید کرد؟؟؟

  12. #12
    کاربر دائمی آواتار MSK
    تاریخ عضویت
    تیر 1383
    محل زندگی
    فعلا تهران - بعدا خدا می‌دونه!
    پست
    331

    نقل قول: python 2.x یا python3.x

    من خودم چند دفعه سعی کردم کوچ کنم به python 3؛ اما به محض این‌که تصمیم بگیری یه کار درست حسابی بکنی. یعنی نیاز به یک کتابخونه ی بزرگ مثل PyQt یا PyGTK پیدا می کنی و این هم یعنی فعلا مجبوری به همون python 2 بچسبی.

    تفاوت از python 2 به 3 تفاوت ساختاری نیست؛ تفاوت رویکردیه. توی سری دوم شعار این بود که برای نوشتن یک برنامه به تعداد برنامه نویسان روی زمین راه وجود داره! یعنی به اضافه کردن امکانات می پرداختند. اما مثل اینکه به این نتیجه رسیدند که این کار خوبی نبوده: مثلا یه برنامه نویس تازه کار کافی بود بنویسه for i in range(1000000000): pass و خوب دیگه python بدرد نمی خوره!! بریم سراغ یه زبان درست حسابی! یعنی برخلاف شعار اصلی python یعنی سادگی. سیکل یادگیری زبان خیلی هم طولانی شده بود که باعث شد این حرکت از ۲ به ۳ انجام بشه.

    در هر صورت من تفاوت بین دو و سه رو مثل تفاوت دوتا لهجه از یه زبان میبینم که میشه هردو رو همزمان یادگرفت.
    موفق باشید.

  13. #13

    نقل قول: python 2.x یا python3.x

    سلام رفیق
    لزوما مفسر پایتون خیلی قوی نشده بلکه ممکنه در نسخه های جدید اون کتابخونه ای یا ماژولی که استفاده میکنی ازش بهینه تر کدنویسی شده باشه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •