تعریف تابع در پایتون
در این جلسه از آموزش رایگان پایتون میخواهیم نحوه تعریف تابع در پایتون را آموزش دهیم. تابع در پایتون، بلوکی از کدها است که تنها زمانی که فراخوانی شود اجرا میشوند. در این پست شما خواهید آموخت که : تابع در پایتون چیست، چگونه یک تابع در پایتون بنویسید و با چگونگی فراخوانی یک تابع در پایتون آشنا میشوید.
دلیل نیاز به نوشتن تابع در پایتون
یک تابع، بلوکی از کدهاست. تا زمانی که تابع فراخوانی نشود، کدهای داخل آن اجرا نخواهند شد! ولی چرا چنین چیزی نیاز است؟ چه نیازی است که مجموعهای از کدها را در تابع بگذاریم و بعد آن تابع را فراخوانی کنیم که اجرا شوند؟مگر همینطور عادی اجرا شوند چه مشکلی دارد؟
توابع کدهای شما را ماژولار میکنند. این مسئله در کدهایی که تاکنون نوشتیم، نیاز نیست! اما تصور کنید که شما کدی نوشته باشید که بسیار طولانی و با محاسبات متنوع باشد. آنگاه ماژولار بودن به فهم بهتر کد کمک میکند. اما مهمتر از این، ماژولار بودن، تابع از تکرار هم جلوگیری میکند! این مسئله را با مثال توضیح میدهم…
کد محاسبه فاکتوریل در پایتون
در جلسه قبل، آموختید که چگونه با استفاده از دستور while در پایتون، فاکتوریل یک عدد را محاسبه کنید. کدی که برای محاسبه فاکتوریل نوشتیم به شکل زیر بود:
num = 4 cnt = num - 1 while cnt > 0: num *= cnt cnt -= 1 print(num)
کد بالا مقدار !4 را محاسبه میکند. حالا فکر کنید کدی داشته باشیم که در آن بخواهیم عبارت زیر را محاسبه کنیم:
خب برای محاسبه این عبارت باید بنویسیم:
num1 = 52 cnt = num1 - 1 while cnt > 0: num1 *= cnt cnt -= 1 num2 = 5 cnt = num2 - 1 while cnt > 0: num2 *= cnt cnt -= 1 num3 = 47 cnt = num3 - 1 while cnt > 0: num3 *= cnt cnt -= 1 print(num1/(num2 * num3))
برای محاسبه چنین عبارتی، باید همینقدر کد بزنیم! مشاهده میکنید که کد محاسبه فاکتوریل سه بار تکرار شده است. حالا اگر 10 تا محاسبه فاکتوریل در این عبارت بود، این کد باید 10 بار تکرار میشد!! اما کد بالا با تعریف یک تابع برای فاکتوریل به شکل زیر میشود:
def fact(num): cnt = num - 1 while cnt > 0: num *= cnt cnt -= 1 return num print(fact(52)/(fact(5) * fact(47)))
به همین سادگی! مشاهده میکنید که کد محاسبه فاکتوریل در تابعی به نام fact گذاشته شده است. به همین سادگی با تعریف تابع در پایتون، توانستیم کدمان را سادهتر و قابل فهمتر کنیم! نحوه تعریف تابع در پایتون و استفاده از تابع تعریف شده را در بخشهای بعدی خواهم گفت.
ساختار تعریف تابع در پایتون
تابع در پایتون همانند حلقهها و عبارات شرطی، یک ساختار و تمپلیت مشخص دارد. در شکل زیر ساختاری که برای تعریف تابع در پایتون باید رعایت کنیم آورده شده است:
مشاهده میکنید که چند کلیدواژه در تمپلیت تابع وجود دارد. عبارتهای def و پرانتزها و علامت کولن (:)، در ساختار همه توابع باید وجود داشته باشند و ثابت هستند. اگر اینها را نگذاریم چه میشود؟ خب واضح است به خطا برمیخوریم! حکم کلمه return چه هست، بگذاریم یا نه؟ این کلیدواژه دلخواه است. بسته به کاربرد میتواند باشد یا نباشد! اما هرکدام از این کلیدواژههایی که در تصویر بالا میبینید (قرمز یا خاکستری) چه معنی دارند؟
کلیدواژههای تعریف تابع در پایتون
یکی یکی کلیدواژههایی که در ساختار تابع بودند را بررسی میکنیم.
- عبارت def مخفف definition است و همیشه یک تابع با این عبارت باید شروع شود.
- عبارت function_name همانطور که از نامش پیداست، نام تابع مورد نظرمان است. بهتر است یک اسم با مسما برای تابع خود انتخاب کنید و آن را به جای عبارت function_name قرار دهید. دقت کنید که تابع شما حتما باید یک اسمی داشته باشد و نمیتوانید این قسمت را خالی بگذارید!
- پرانتز و علامت کولن هم، همانطور که گفتیم باید باشند.
- عبارت args نماینده ورودیهایی است که تابع باید داشته باشد. ممکن است تابع شما نیاز به هیچ ورودی نداشته باشد. در این صورت به args نیازی نیست. اما ممکن است تابع چندین ورودی نیاز داشته باشد. در این صورت باید با استفاده از علامت کاما (,) ورودیها را از هم جدا کرد.
- در بخش statements، کدها نوشته میشوند. از تابع چه میخواهید. میخواهید چکار کند؟ در این قسمت دقیقا همان را باید بنویسید! دقت کنید که indentation را باید رعایت کنید. یعنی کدها در قسمت statements، سر خط نوشته نمیشوند بلکه معمولا با فاصله چهار space از سر خط نوشته میشوند.
- گفتیم عبارت return یک کلمه کلیدی اختیاری است. در صورتی که بخواهیم تابع خروجی داشته باشد از return برای برگرداندن خروجی استفاده میکنیم. در این صورت کافی است مقداری که میخواهیم از تابع خارج شود را جلوی return و به جای values بنویسید!
اگر نکاتی که گفتم برایتان مبهم است، اصلا نگران نباشید. در بخشهای بعدی چندین مثال خواهید دید و کامل این نکات را درک خواهید کرد. برویم سراغ بخش بعدی…
تعریف تابعی برای محاسبه مجموع المانهای لیست در پایتون
در این بخش با استفاده از چیزهایی که تا اینجا یاد گرفتیم میخواهیم تابعی تعریف کنیم که مجموع المانهای یک لیست را محاسبه کند. قدم به قدم طبق ساختاری که گفتیم، پیش میرویم. اول از همه باید نامی برای تابع پیدا کنیم. اسم تابع را sum_list در نظر میگیریم. این تابع چه ورودیهایی نیاز دارد؟ خب قطعا یک لیست میخواهد. به جای args، مینویسیم my_list. تا اینجا کدمان به این شکل است:
def sum_list(my_list):
خب خط اول که اکی شد. میرویم سراغ statements. اینجا باید کدی بنویسیم که تمام عناصر داخل my_list را با هم جمع کنید درست است؟ به یک حلقه نیاز داریم. یک حلقه در my_list میزنیم و بعد المانها را یکی یکی با هم جمع کرده و در متغیری به نام مثلا s میریزیم. کد این قسمت را هم به کد بالا اضافه میکنیم:
def sum_list(my_list): s = 0 for x in my_list: s += x
خب، قبول دارید که تا اینجا تمام المانهایی که در my_list هستند با هم جمع شده و در متغیر s ذخیره شدهاند. خب حالا تکلیف چیست؟ s دقیقا همان چیزی است که میخواهیم از تابع خارج شود. بنابراین مینویسیم:
def sum_list(my_list): s = 0 for x in my_list: s += x return s
بدین ترتیب، تابعی به نام my_list نوشتیم که یک لیست از ما میگیرد و مجموع المانهای آن لیست را به ما تحویل میدهد. تعریف تابع در پایتون ساده بود نه؟ اگر هنوز برایتان کمی مبهم است، اصلا نگران نباشید. باز هم مثال داریم. برویم سراغ بخش بعدی…
فراخوانی تابع در پایتون
در بخش قبل، نحوه نوشتن تابع در پایتون را یاد گرفتیم. حالا میخواهیم ببینیم که چطور از تابعی که نوشتیم میتوانیم استفاده کنیم. استفاده از توابع بسیار ساده است. کافی است نام تابع را بنویسیم و بعد جلویش یک پرانتز باز کرده و ورودی بدهیم! برای مثال میخواهیم جمع المانهای [1, 2, 3] را با استفاده از تابعی که در بخش قبل نوشتیم، محاسبه کنیم. به این منظور کافی است بنویسید:
print(sum_list([1, 2, 3]))
6
مشاهده میکنید، تابعی که نوشتیم، مجموع المانهای لیست را به درستی محاسبه کرده است. به همین راحتی میتوان از تابعی که تعریف کردهایم استفاده کنیم. در بخش بعدی از پست «تعریف تابع در پایتون» چند مثال را بررسی میکنیم.
تعریف تابع در پایتون برای تعیین زوج یا فرد بودن یک عدد
در این مثال میخواهیم تابعی تعریف کنیم که یک عدد را بگیرد و در خروجی پرینت کند که این عدد زوج است یا فرد! اسم تابع را odd_even انتخاب میکنیم. برای اینکه ببینیم عدد زوج است یا فرد کافی است که آن عدد را بر 2 تقسیم کنیم. اگر باقیمانده این تقسیم، صفر باشد، عدد زوج است. در غیر اینصورت عدد فرد است. کد مربوط به این تابع به شکل زیر است:
def odd_even(num): if num % 2 == 0: print('Your number is even') else: print('Your number is odd')
مشاهده میکنید که یک عبارت شرطی نوشتیم. گفتیم که اگر باقیمانده تقسیم بر 2، برابر با صفر باشد، بنویس “عدد شما زوج است”. در غیر اینصورت بنویس “عدد شما فرد است”. اما چرا return نداریم؟ گفتیم که عبارت return دلخواه است. اما اینجا ما خروجی نداریم! قرار بود یک چیزهایی در خروجی چاپ شود که داخل تابع این کار انجام شد! دیگر نیازی نداریم که چیزی را return کنیم.
جمعبندی
در این پست، نحوه تعریف تابع در پایتون را آموزش دادیم. چند مثال از نوشتن تابع در پایتون گفتیم. امیدوارم این آموزش مورد توجه شما قرار گرفته باشد.
مطالب زیر را حتما مطالعه کنید
دستورهای پراستفاده pip
علامت تقسیم ، باقیمانده و خارج قسمت در پایتون
نصب کتابخانه matplotlib در پایتون
کوندا چیست
آموزش matplotlib در پایتون
آموزش کتابخانه numpy در پایتون
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
ممنون از توضیحات غیر پیچیده و کاملا گویا
😊🌹🙏