زبان پایتون
آموزش‌های پایه‌ای هوش مصنوعیاصول هوش مصنوعیپایتون و ابزارهای یادگیری عمیق

با ۵ ویژگی پیشرفته زبان پایتون و نحوه استفاده از آن‌ها آشنا شوید

    0

    زبان پایتون ، زبان فوق‌العاده‌ای است. این زبان تفسیری و استفاده از آن آسان است. اما آیا شما از تمامی ویژگی‌ها و قابلیت‌های این زبان برنامه نویسی استفاده می‌کنید؟

    معمولاً ویژگی‌های پیشرفته تمامی زبان‌های برنامه‌نویسی را با تکرار و تمرین مداوم می‌توان کشف کرد. فرض کنید در حال کدنویسی پروژه‌ پیچیده‌ای هستید و در Stack Overflow به دنبال چیزی می‌گردید و در نهایت برای حل مشکل خود به راه‌حلی می‌رسید که از یکی از ویژگی‌های پیشرفته زبان پایتون استفاده می‌کند و شما از وجود چنین قابلیتی اطلاع نداشتید.

    در ادامه به معرفی ۵ ویژگی پیشرفته و پرکاربرد زبان پایتون می‌پردازیم و علاوه بر آن نحوه استفاده از آن‌ها را شرح می‌دهیم.

    ۱) توابع لامبدا

    تابع لامبدا Lambda functions، تابعی کوچک و بی نام است. دلیل این‌که این توابع بی‌نام هستند این است که بدون نام تعریف می‌شوند.

    توابع پایتون اغلب با فرمت ” Def نام_ تابع ()” تعریف می‌شوند اما توابع لامبدا را به صورت بی‌نام استفاده می‌کنیم و نامی برای آن تعیین نمی‌کنیم.  دلیل این‌که برای این توابع نام تعیین نمی‌کنیم این است که از توابع لامبدا برای اجرای نوعی عبارت  (Expression) و عملیات‌ ساده استفاده می‌شود که برای انجام آن‌ها نیازی به تعریف کامل یک تابع نیست.

    تابع لامبدا می‌تواند آرگومان‌های متعددی داشته باشد اما فقط می‌تواند یک عبارت (Expression) داشته باشد:

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

    ۲) نگاشت‌ها

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

    به مثال فوق توجه کنید. ما می‌توانیم تابع خود را بر روی یک یا چند لیست اجرا کنیم. به عبارت دیگر می‌توانید یک map را به همراه هر یک از توابع پایتون که تصورش را می‌کنید، استفاده کنید. البته به شرطی‌که این تابع با توالی‌ای که بر روی آن عملیات را انجام می‌دهید، سازگار باشد.

    ۳) فیلتر کردن

    تابع توکار Filter شباهت زیادی به تابع Map دارد. به بیانی دیگر،  Filter نیز همانند Map تابعی بر روی یک توالی (لیست، مجموعه‌ چندتایی Tuple، دیکشنری) اجرا می‌کند. تفاوت کلیدی میان این دو قابلیت در این است که filter()  فقط عناصری را باز می‌گرداند که تابع اعمال شده آن‌ها را با مقدار True باز گردانده است.

    در کد فوق True یا False بودن هر یک از عناصر موجود در فهرست را بررسی کردیم و علاوه بر آن تابع filter()  تمامی عناصری که مقدار آن‌ها True بوده را باز گردانده است. از این تابع می‌توانیم برای ساخت فهرست بازگشتی پس از رعایت دو شرط لازم استفاده کنیم.

    زبان پایتون

    ۴) Itertools

    ماژول Itertools زبان پایتون مجموعه‌ای از ابزارها است که تکرارکننده‌ها Iterators را مدیریت و کنترل می‌کند. تکرارکننده نوعی داده است که می‌توان از آن در یک حلقه for از جمله لیست­‌ها، مجموعه‌های چندتایی tuples و دیکشنری‌ها dictionaries استفاده کرد.

    استفاده از توابع در ماژول Itertools این امکان را برای شما فراهم می‌کند تا عملیات‌های تکرارکننده زیادی انجام دهید که در حالت عادی برای انجام آن‌ها به توابع چندخطی و خلاصه لیست‌های List comprehension پیچیده نیاز دارید. برای آشنایی بیشتر با ماژول فوق‌العاده Itertools به مثال مقابل توجه کنید:

    ۵) Generator

    تابع Generator این امکان را برای ما فراهم می‌کند تا تابعی را که همانند تکرارکننده عمل می‌کند را تعریف کنیم؛ به عبارت دیگر می‌توان از این تابع در حلقه for استفاده کرد. استفاده از این تابع، کد را تا حد زیادی آسان می‌کند و نسبت به حلقه for فضای کمتری از حافظه را اشغال می‌کند.

    فرض کنید می‌خواهیم اعداد ۱ تا ۱۰۰۰ را با هم جمع کنیم. بخش اول کد مقابل نشان می‌دهد که چگونه می‌توانید با استفاده از یک حلقه for این عملیات ریاضی را انجام دهید.

    این کد در مواردی ‌که فهرست کوچک باشد، برای مثال اگر فهرست شامل ۱۰۰۰ عنصر باشد، عملکرد مناسبی دارد. اما زمانی‌که فهرست بسیار بزرگ باشد، برای مثال اگر فهرست از ۱ میلیارد عدد اعشار تشکیل شده باشد، کارایی این کد تضعیف می‌شود. در این حالت اگر از یک حلقه for استفاده کنیم، این فهرست بزرگ که حجم بالایی از حافظه را اشغال می‌کند، در حافظه (memory) ذخیره می‌شود –همه افراد که RAM نامحدودی در اختیار ندارد تا بتوانند چنین چیزی را بر روی آن ذخیره کنند. تابع range() در زبان پایتون همین عملیات را انجام می‌دهد و فهرست را در حافظه ایجاد می‌کند.

    بخش دوم این کد با استفاده از یک generator پایتون، عمل جمع کردن لیست هایی از اعداد را به نمایش می‌گذارد. Generatorها فقط در صورتی عناصر را ایجاد و در حافظه ذخیره می‌کنند که به آن‌ها نیاز داشته باشند. به عبارت دیگر اگربخواهید ۱ میلیارد عدد با ممیز اعشاری Floating point number ایجاد کنید، فقط یکبار آن­ها را در حافظه ذخیره خواهید کرد. تابع xrange() در زبان پایتون برای ایجاد لیست­ها از generatorها استفاده می‌کند.

    نکته مهم: اگر عناصر بسیار زیادی دارید و تصمیم دارید فهرستی برای آن‌ها ایجاد کنید، از generator و یا تابع xrange استفاده کنید. به ویژه در مواردی که سیستمی دارید که تا حد زیادی به حافظه متکی است، برای مثال تلفن همراه و یا رایانش پیشرفته، به کار‌گیری این روش بسیار سودمند خواهد بود.

    از سوی دیگر اگر تصمیم دارید این فهرست را چندین بار تکرار کنید و فهرست به اندازه‌ای کوچک است که در حافظه جای می‌گیرد، بهتر است از حلقه‌های for و یا تابع range  استفاده کنید. دلیل انجام چنین کاری این است که هر بار که به generatorها و xrange دسترسی پیدا می‌کنید، آن‌ها مقادیر لیست را از نو ایجاد می‌کنند، درصورتی که تابع range لیستی ثابت است و اعداد صحیح برای دسترسی سریع از قبل در حافظه قرار دارند.

     

    کتابخانه Pandas و ۶ گزینه برای نمایش فرمت در آن که باید به خاطر بسپارید

    مقاله قبلی

    گرادیان کاهشی و گرادیان کاهشی تصادفی و نقش آن‌ها در شبکه‌های عصبی

    مقاله بعدی

    شما همچنین ممکن است دوست داشته باشید

    نظرات

    پاسخ دهید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *