4 ویژگی قدرتمند پایتون که کمتر مورد توجه قرار می گیرد

پایتون یک زبان زنده است که دائما در حال توسعه و بروزرسانی می باشد تا با تغییرات روز همگام شود. بنیاد نرم افزار پایتون نه تنها کتابخانه استاندارد آن را توسعه می دهد و مرجع CPython را پیاده سازی می کند، بلکه در حال معرفی ویژگی ها و پالایش خود زبان است. در ادامه 4 ویژگی قدرتمند پایتون که کمتر مورد توجه قرار می گیرد را معرفی خواهیم کرد.

برای مثال، پایتون 3.8 دستور جدیدی برای اختصاص درون خطی (warlus operator) معرفی کرده است که باعث می شود بعضی عملیات ها کوتاه تر شوند. یکی دیگر از اصلاحات سینتکسی جدید، تطبیق الگویی است نوشتن کد را آسان تر می کند. هر دو این ویژگی ها از زبان های برنامه نویسی دیگر الهام گرفته شده اند.

ثابت ها

پایتون در واقع مفهوم مقدار ثابت را ندارد. امروزه، ثابت ها در پایتون بیشتر یک موضوع قراردادری است. استفاده از یک نام که تمام حروف آن با حرف های یزرگ نوشته شده باشد، مانند “PI” ، اعلان و هشداری است که می گوید این متغیر نباید تغییر کند. به طور مشابه در استفاده از Annotation ها یا حاشیه نویسی بر روی یک شئ یا object، مثلا به خواننده کد می گوید که این شئ نباید تغییر کند، اما این کار را در زمان اجرا نمی کند.

چرا؟ چون قابلیت تغییرپذیری در رفتار های پایتون بسیار ریشه دار است. هنگامی که یک مقدار را به یک متغیر تخصیص می دهید، به عنوان مثال x=3 ، می توانید یک نام را در فضای نام محلی ایجاد کرده و آن را به یک شئ در سیستم که دارای عدد صحیح 3 هست، ارجاع دهید. هر اسمی می تواند به هر شئی اشاره کند. این بدان معناست که هربار از یک نام استفاده می شود، پایتون به دنبال شئ یا مقدار مربوط به آن نام است. این پویایی یکی از دلایلی است که پایتون را نسبت به برخی از زبان های دیگر کندتر می کند. پایتون انعظاف پذیری و راحتی بالایی را به کاربران خود ارائه می دهد اما به قیمت افزایش هزینه عملکرد اجرا.

یکی دیگر از مزیت های داشتن ثابت های واقعی در پایتون، کاهش در دفعات جستجوی اشیاء است که در زمان اجرا اتفاق می افتد که در نتیجه عملکرد بهتری خواهد داشت. اگر در زمان اجرا برنامه از قبل بداند که هیچ مقدار مشخصی از ثابت مربوطه تغییر نمی کند، لازم نیست که مقدار آن را چک کند. این کار همچنین می تواند راهی برای بهینه سازی های بیشتر ماژول های شخص ثالث باشد. مانند سیستم هایی که کد برنامه بومی را از طریق برنامه های پایتون تولید می کنند. (Cython و Nuitka)

سربارگذاری توابع (Overloading) و Generics

 

4 ویژگی قدرتمند پایتون

4 ویژگی قدرتمند پایتون

در بسیاری از زبان های برنامه نویسی، یک تابع می تواند نسخه های مختلفی با نام یکسان برای کار با انواع داده ها داشته باشد. به عنوان مثال، تابع ()to_string می تواند پیاده سازی های مختلفی برای انواع اعداد صحیح، اعشاری و … داشته باشد، اما نام تمامی آن نسخه ها یکسان است و فقط نوع پارامتر های آن فرق می کند. این ویژگی که سربارگذاری تابع نام دارد، باعث می شود تا برنامه های ما منعطف تر شوند. Generic کار را حتی آسان تر هم می کند. با استفاده از این تکنیک، حتی نیازی به پیاده سازی های مختلف ندارید و می توانید فقط با یک پیاده سازی تابع، انواع نوع داده پارامتر ها را پشتیبانی کنید.

پایتون از سربارگذاری تابع پشتیبانی نمی کند. این بدین معناست که شما نمی توانید پیاده سازی های مختلفی از یک تابع تحت یک نام داشته باشید. راه حلی که توسعه دهندگان در این مورد به کار می برند، استفاده از توابع ()isinstance یا ()type هست که می توان نوع داده ها را با استفاده از آن ها بدست آورد و اقدامات مربوطه را انجام داد.

بهینه سازی بازگشتی یا Tail recursion

4 ویژگی قدرتمند پایتون

4 ویژگی قدرتمند پایتون

بسیاری از زبان های کامپایلری، از بهینه سازی Tail recursion (مربوط به فراخوانی های بازگشتی) استفاده می کنند. این در حالی است که توابعی که خودشان، خودشان را فراخوانی می کنند (فراخوانی بازگشتی)، فریم های جدید پشته را در برنامه ایجاد نمی کند و بهمین دلیل اگر مدت زمان زیادی اجرا شوند، پشته پر خواهد شد.ایتون این کار را انجام نمی دهد.

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

عبارات لامبدا

4 ویژگی قدرتمند پایتون

4 ویژگی قدرتمند پایتون

عبارت های لامبدا در پایتون بسیار محدود هستند. آن ها فقط به شما اجازه می دهند تا از یک تک عبارت به عنوان بدنه تابع استفاده کنید. به دلیل پشتیبانی پایتون از بلوک های بر اساس tab (دندانه ای)، امکان استفاده از لامبدا های چندخطی وجود نخواهد داشت زیرا به زیبایی کد که یکی از اهداف پایتون است، لطمه وارد می کند.

QR:  4 ویژگی قدرتمند پایتون که کمتر مورد توجه قرار می گیرد
به اشتراک بگذارید