آنچه در این مقاله میخوانید
تغییرات Python 3.9
۳۰ مهر ۱۳۹۹
نسخههای جدید پایتون همیشه با خود نوآوری و قابلیتهای کاربردی به همراه دارند، اما نسخه 3.9 یک نقطه عطف واقعی در مسیر توسعه این زبان است. از تغییرات اساسی parserها گرفته تا بهبود قابلیت Type Hinting و اضافهشدن متدهای جدید برای رشتهها و دیکشنریها، این نسخه روند تکامل پایتون را سرعت میبخشد و محدودیتهای گذشته را کاهش میدهد.
اگر توسعهدهنده پایتون هستید، درک این تغییرات نه تنها به شما کمک میکند تا کدهای بهتر و امنتری بنویسید، بلکه دیدی روشن نسبت به آینده پایتون و چرخه انتشار سریعتر آن نیز به شما میدهد. در ادامه، به مهمترین تغییرات و قابلیتهای نسخه 3.9 میپردازیم و نشان میدهیم چگونه میتوان از آنها در پروژههای واقعی بهره برد.
در ادامه خواهید خواند:
- مسیر جدید پایتون
- LL و PEG
- چرخه توسعه
- قابلیتهای جدید
- نگاه به آینده
- جمع بندی

مسیر جدید پایتون
۲ تغییر اساسی در این بروزرسانی وجود دارد که ما هیچ گونه تاثیر چندانی از آنها نخواهیم دید، اما تغییرات پایتون، به عنوان یک زبان برنامهنویسی را بررسی خواهیم کرد.
به صورت خلاصه، بخش تغییرات پایتون، شامل ۲ مورد زیر میشود:
- محدودیتهای parserهای پایتون
- تغییرات کوچک اما زود به زود
LL و PEG
حدود ۳۰ سال پیش، Guido van Rossum، خالق پایتون، pgen، یکی از بخشهای ابتدایی برای پایتون را نوشت. همچنین تا به امروز نیز به عنوان parser پایتون استفاده میشود.
pgen از گرامر و قواعد مختلف LL استفاده میکند. این بدین معنی است که parserمان، کد را از بالا به پایین و از چپ به راست، میخواند و این کار تنها توسط یک token انجام میشود.
این موضوع اساسا چنین چیزی را بیان میکند که توسعه پایتون محدود است، زیرا:
- واضح بود که استفاده از یک token قواعد این زبان را محدود میکند.
- در حال حاضر پایتون شامل گرامری بدون LL میشود که این موضوع را بیان میکند که parser فعلی از راهحلهای بسیار زیاد و پیچیدگی بیش از حد در پراسسها، استفاده میکند.
- حتی با استفاده از این راهحلها، تنها برخی از آنها ممکن و کاربردی هستند. میتوان قوانین را دور زد اما نمیتوان آنها را شکست و یا رعایت نکرد.
- با استفاده از LL، سینتکس بازگشتی به چپ میتواند باعث ایجاد حلقه بینهایت در درخت parse شود که همین موضوع منجر به stack overflow خواهد شد. این موضوع توسط خالق پایتون، در این لینک کاملا توضیح داده شده است.
ویژگیهای parserهای مبتنی بر LL باعث ایجاد محدودیت و غیرممکنکردن ممکنها در پایتون میشود. پایتون نسخه 3.9 این محدودیتها را با توجه به parser جدید PEG که در PEP 617 ارائه شده، از بین برده است.
فورا ما این موضوع را متوجه نخواهیم شد اما هیچ تغییری تا قبل از انتشار نسخه 3.10 پایتون در parser جدید احساس نخواهد شد. اما بعد از آن پایتون از محدودیت LL خلاص خواهد شد.
با هاست پایتون لیارا، اپلیکیشنهای پایتون خودت را سریع و امن اجرا کن.
✅ راهاندازی فوری ✅ محیط اختصاصی Python ✅ مقیاسپذیری آسان
خرید و راهاندازی هاست پایتون
چرخه توسعه
تا قبل از ارائه نسخه 3.9 پایتون، انتشار نسخههای مختلف آن در بازههای زمانی ۱۸ ماهه برنامهریزی شده بود. اما حالا، شاهد این هستیم که این بازه به ۱۲ ماه کاهش پیدا کرده است (PEP 602) و به جای اینکه هر یک سال و نیم شاهد ارائه یک نسخه جدید باشیم، میتوانیم سالی یکبار، نسخهای جدید را دریافت کنیم و این یعنی:

- انتشار نسخههای جدید، شامل قابلیتهای کمتری خواهد بود.
- ایجاد تغییرات تدریجی، اما ارائه قابلیتهای جدید در نسخههای مختلف و فیکسکردن مشکلات سریعتر خواهد بود.
- تقویم انتشار نسخههای جدید، استوارتر و قابل اطمینانتر خواهد بود و حالا این را میدانیم که در اکتبر هر سال، باید منتظر ارائه نسخه جدیدی از پایتون باشیم.
قابلیتهای جدید
در کنار این تغییرات پشت پردهای، شاهد ارائه قابلیتهای جدیدی برای پایتون هستیم.
تعیین نوع دیتای متغیرها یا Type Hinting
این موضوع به سال ۲۰۰۸ بازمیگردد، زمانی که پایتون 3 یادداشتنویسی یا annotationها را برای توابع معرفی کرد، چیزی که باعث شکلگیری Type Hinting شد. این اتفاق شاید به اندازه کافی بزرگ و قدرتمند نبود، اما به نقطه آغازی برای این موضوع تبدیل شد.

به دنبال این موضوع سایر قابلیتهای بیشتری نیز در گذر زمان اضافه شدند. اما حالا نسخه 3.9، تمام قابلیتهای مختلف را با یک سینتکس جدید و مرتب برای ایجاد بهترین تغییرات و توسعهها در پایتون، کنار هم قرار داده است.
به سادگی میتوانیم نوع دیتایی که برای متغیرهایمان انتظار میرود را مشخص کنیم. اگر بعد از این کار چیزی بنویسیم که منطقی نباشد (مثلا یک رشته یا string را به یک عدد صحیح یا integer پاس دهیم)، ویرایشگرمان وجود چنین موضوعی را، به ما اعلام خواهد کرد و اجرای کد، هیچ خطایی را ایجاد نخواهد کرد (متاسفانه)، اما این موضوع به هنگام کار با کدهای پیچیده مفید است. بیایید نگاهی به سینتکس جدید بیاندازیم.
در پایتون، افزودن ۲ رشته توسط + به یکدیگر، معتبر و قابل استفاده میباشد. پس در تابع add_int زیر، به هنگام دریافت string به عنوان ورودی، نباید با خطایی مواجه شویم.

با استفاده از قابلیت Type Hinting، به سادگی میتوانیم با افزودن : int به بعد از پارامتر تابع، به هنگام تعریف آن، از مزیت اعلان خطا توسط ویرایشگر بهرهمند شویم.

با استفاده از سینتکس -> type به هنگام تعریف تابع، میتوانیم نوع داده خروجی را تعیین کنیم.

و در انتها به این نکته هم اشاره کنیم که در Type Hinting به نوع دادههای ساده و اصلی محدود نیستیم!
متدهای مرتبط با stringها یا String Methods
شاید این تغییر به اندازه سایر تغییرات، چشمگیر نباشد، اما دیدهایم که به دفعات زیاد استفاده شده است. در این نسخه، ۲ متد جدید برای حذف پیشوند و پسوند از stringها در اختیار داریم:
"foo bar".removeprefix("fo")
[Out]: 'o bar'
"foo bar".removesuffix("ar")
[Out]: 'foo b'
اتصال دیکشنریها به یکدیگر یا Dictionary Unions
در این قسمت ۲ عملگر جدید در رابطه با اتصال یا اجرای Union بر روی دیکشنریها را به شما معرفی کنیم.
اولین عملگر، عملگر ادغام یا merge است: |
a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
c = a | b
print(c)
[Out]: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
و بعدی عملگر بروزرسانی یا update است، که عملیات ادغام یا merge را در یک جا انجام میدهد: |=
a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
a |= b
print(a)
[Out]: {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
نگاه به آینده
آینده جذابی برای پایتون، به عنوان یک زبان برنامهنویسی، وجود دارد. همچنین مشاهدهی نحوهی تکامل یک زبان با یک برنامه زمانبندی جدید برای انتشار نسخههای و parserهای جدید، هیجان انگیز خواهد بود.
برای دانلود نسخه 3.9، به این لینک و همچنین برای مشاهده PEPهای جدید، ماژولهای جدید و … (در واقع تمامی تغییرات و قابلیتهای جدید) به این لینک مراجعه کنید.
هاست پایتون چیست؟ + راهنمای کامل خرید هاست Python
هاست پایتون
جمع بندی
پایتون 3.9 با معرفی parser جدید PEG، بهبود Type Hinting، متدهای جدید رشته و قابلیتهای ادغام دیکشنری، گامی بزرگ در بهبود انعطافپذیری و توسعهپذیری این زبان برداشته است. این تغییرات، گرچه در ظاهر کوچک به نظر میرسند، اما مسیر توسعه و نوشتن کدهای تمیز، ایمن و قابل نگهداری را سادهتر میکنند.
چرخه انتشار سریعتر نسخهها نیز به توسعهدهندگان این امکان را میدهد که از ویژگیهای جدید بهرهمند شوند و مشکلات را سریعتر برطرف کنند. با نگاه به آینده، میتوان انتظار داشت که پایتون با همین رویکرد، همواره زبانی مدرن، پایدار و سازگار با نیازهای توسعهدهندگان باقی بماند.پ