آموزش توابع در پایتون

جلسه یازدهم دوره پایتون – آشنایی و کار با توابع در پایتون

مقدمه

در جلسه یادزدهم از دوره آموزشی پایتون قصد داریم در مورد موضوع بسیار مهمی به نام توابع اسحرف بزنیم. توابع در زبان پایتون استفاده بسیار زیادی می شوند. در این جلسه برای فهم بهتر سعی شده است که از مثال های زیادی استفاده کنیم. قبل از هر چیز ، مثل سایر جلسات پیشنهاد میکنم جلسات قبل را از لینک های زیر بخوانید: 

معرفی تابع و ایجاد آن در پایتون

توابع بخشی از کد هستند که ما میتوانیم از آنها چندین بار استفاده کنیم. یعنی ما یک بار یک تابع را مینویسم و در طول برنامه هر چقدر که دلمان بخواهد میتوانیم از آن استفاده کنیم. یکی دیگر از ویژگی های تابع آن است که به کدهای ما کمک می کند تا ساختار بهتری داشته باشند و خوانایی آنها بالاتر برود. 

نحوه ایجاد و تعریف یک تابع:

در پایتون برای ایجاد یک تابع از کلمه کلیدی def استفاده میکنیم. در زیر Syntax مربوط به یک تابع آورده شده است:

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

در مثال بالا یک تابع تعریف شده است که این تابع دو پارامتر start و end را در ورودی دریافت می کند و عدد ورودی را در یک حلقه for با تمامی اعداد ما بین عدد ورودی و خروجی جمع می کند. سپس نتیجه در خروجی نشان داده می شود. در این مثال دستور( sum(10 , 50 همان صدا زدن تابع است و 10 در اینجا همان start و 50 همان end می باشد.  اگر این کد را اجرا کنیم نتیجه برابر 1230 می شود. 

 توابعی که دارای خروجی هستند:

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

در بالا نتیجه خروجی برابر با متغیر s قرار داده شده است و مشابه مثال قبل ، در اینجا نیز خروجی برابر 1230 می باشد.  

البته میتوان از return استفاده کرد ، بدون آن که مقداری را در خروجی قرار داد. مثال زیر را ببینید:

در مثال بالا اگر مقدار start از end کمتر بود ، در این حالت یک پیغام بر روی خروجی چاپ می شود و از تابع خارج می شویم. در غیر این صورت مشابه قبل عملیات جمع انجام می شود. 

اگر کد بالا را اجرا کنیم نتیجه به صورت زیر خواهد بود:

در مثال بالا چون عدد 110 که start است ، از عدد 50 که end است ، بیشتر می باشد ، پیغام مربوطه بر روی خروجی چاپ می شود و از تابع خارج می شود. سپس مقدار return شده نمایش داده می شود. توجه داشته باشید که اگر در پایتون خروجی یک تابع صریح و مشخص نباشد ، در این صورت مقدار None مربوطه قرار می گیرد. به همین دلیل در این جا مقدار s برابر None شده است.  برای این که این مفهوم را بهتر درک کنیم به مثال زیر توجه کنید:

اگر این کد را اجرا کنیم ، نتیجه خروجی به صورت زیر خواهد بود :

در مثال بالا چون تابع test مقدار مشخصی را بر نمی گرداند ، به همین خاطر مقدار None برگشت داده می شود. 

آشنایی با متغیرهای عمومی و خصوصی

اگر قبلا با زبان C کار کرده باشید احتمالا با متغیرهای سراسری(Global Variable) و محلی (Local Variable ) آَشنا شده اید. در اینجا نیز منظور از متغیرها عمومی و خصوصی همان متغیرها هستند. ولی چون این کلمات کمی برای ما جا افتاده تر هستند ، سعی کرده ایم به جای محلی و سراسری از نام عمومی و خصوصی استفاده کنیم. در زیر به تعریف این دو نوع متغیر پرداخته ایم:

   متغیرهای عمومی: این متغیرها ، متغیرهایی هستند که میتوان از آن ها در همه جای برنامه استفاده کرد. از این متغیرها چه در داخل توابع و چه در خارج از توابع میتوانیم استفاده کنیم. 

  متغیرهای خصوصی: متغیرهایی که در داخل توابع تعریف می شوند و فقط میتوان از آن ها در همان تابع استفاده کرد و از آنها نمیتوان در جای دیگری از برنامه استفاده کرد را متغیرهای خصوصی می نامند. 

برای درک بهتر این بحث به چند مثال زیر توجه کنید:

 مثال 1:

اگر این کد را اجرا کنیم عدد 12 بر روی خروجی برای ما نشان داده می شود. 

در مثال بالا متغیری که در ابتدای برنامه تعریف شده است یک متغیر عمومی است در حالی که متغیری با نام local_var یک متغیر خصوصی است. 

  مثال 2 : 

نتیجه اجرای کد بالا به صورت زیر است:

در کد بالا در مرحله اول که تابع صدا زده می شود ، مقدار xy برابر با 200 نشان داده می شود. این xy که نشان داده می شود یک متغیر خصوصی است. پس از پایان تابع مقدار xy که یک متغیر عمومی است نشان داده می شود. این متغیر عمومی مقداری برابر با 100 دارد و مقدار آن با مقدار xy متغیر خصوصی کاملا متفاوت است. به همین دلیل پس از اجرای این خط مقدار 100 نشان داده می شود. 

با استفاده از کلمه کلیدی global ما میتوانیم متغیرهای عمومی که در برنامه تعریف شده اند را دقیقا به همان صورت عمومی در توابع خود مورد استفاده قرار دهیم. مثال زیر را ببینید:

در نتیجه اجرای این کد خروجی به صورت زیر خواهد بود:

یکی از نکاتی که در این جا گفتن آن خالی از لطف نیست این است که هنگامی که در یک تابع با کلمه کلیدی global یک متغیر تعریف می کنید ، نمیتوانید آن را مقدار دهی کنید. مثلا اگر در داخل یک تابع بنویسیم  global t = 1 ، در این صورت با خطا مواجه خواهیم شد. 

مقدار پیش فرض دادن به ورودی های یک تابع

برای این که ورودی های یک تابع رو با مقداری مشخص ، معین کنید کافی است تا در همان هنگام تعریف تابع ، مقدار مورد نظر را برابر با پارامتر ورودی قرار دهیم. مثال زیر را ببینید: 

تابع بالا دو ورودی دارد که ورودی دوم با مقدار 100 مقدار دهی شده است. این به این معنی است که ما میتوانیم پارامتر دوم تابع func را هنگام صدا زدن اصلا وارد نکنیم. مثل : 

نتیجه اجرای خط بالا و تابع مورد نظر به صورت زیر خواهد بود : 

return کردن چند مقدار در یک تابع

در یک تابع ممکن است ما بخواهیم چند مقدار را return کنیم. در این صورت کافی است ، عباراتی که قصد return کردن آن را داریم با کاما از یکدیگر جدا کنیم. عبارات return شده به صورت tuple برگشت داده می شوند. مثال زیر را در نظر بگیرید: 

اگر این کد را اجرا کنیم نتیجه آن به صورت زیر خواهد بود :

خوب دوستان. برای این جلسه هم کافی است. مثل همیشه میتوانید ما را در تلگرام و یا اینستاگرام دنبال کنید: 

شاید دوست داشته باشید مطالب زیر را نیز بخوانید:

2 نظر

  • Sahba

    سلام این دوره کامل نیست؟

    • حامد قاسمی

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

  • نوشتن نظر

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

    اضافه کردن تصویر ( فقط فرمت jpg)