آیا باید با توابع در پایتون آشنا شوید؟
به عنوان یک برنامه نویس، اغلب متوجه می شوید که یک عمل یا کار را به طور مکرر انجام می دهید. این می تواند خسته کننده و وقت گیر باشد، به خصوص زمانی که با یک پایه کد بزرگ یا پیچیده کار می کنید. اتوماسیون آنها با توابع رویکرد مؤثرتری برای انجام چنین وظایفی است. توابع به شما این امکان را می دهند که یک بار منطق کد را بنویسید و از آن در هر جایی از برنامه خود استفاده کنید.
تابع پایتون چیست؟
در پایتون، تابع یک بلوک از کد است که برای انجام یک کار خاص استفاده می شود. شما فقط باید یک تابع را یک بار بنویسید، اما می توانید چندین بار از آن در کد خود استفاده کنید. یک تابع می تواند آرگومان ها را به عنوان مقادیر ورودی و خروجی برگرداند. این برنامه ساده تابعی را نشان می دهد که مجموع سه عدد را محاسبه می کند:
# Python function to calculate the sum of three numbers
def calculate_sum(a, b, c):
return a+b+c
print(calculate_sum(1,2,3)) # returns 6
print(calculate_sum(1000, 300,44)) # returns 1344
print(calculate_sum(12, 4,78)) # returns 94
در برنامه بالا، تابع مجموع سه آرگومان را برمی گرداند. هنگامی که تابع چندین بار فراخوانی می شود، خروجی متفاوتی را برای هر مورد برمی گرداند. یک برنامه مفید برای این تابع یک برنامه ماشین حساب خواهد بود.
تعریف تابع در پایتون
پایتون توابع داخلی زیادی دارد که توسعه دهندگان می توانند از آنها استفاده کنند. با این حال، این توابع داخلی همیشه برای برآورده کردن خواستههای اکثر پروژهها کافی نیستند. برای برآورده کردن خواسته های سفارشی، باید توابع سفارشی خود را تعریف کنید. تعریف توابع سفارشی یک روش معمول در برنامه نویسی است.
در پایتون، میتوانید با استفاده از کلمه کلیدی def و به دنبال آن نام تابع خود با پرانتز در مقابل آن، یک تابع سفارشی تعریف کنید. به عنوان مثال:
def function_name()
هنگام تخصیص نام تابع در پایتون باید به این قوانین توجه داشته باشید:
- نام توابع باید با حروف کوچک باشد.
- نام توابع باید توصیفی باشد.
- از زیرخط برای جدا کردن کلمات در نام تابع استفاده کنید.
پس از تعریف تابع، باید منطق را برای انجام وظیفه مورد نظر خود بنویسید. به عنوان مثال، این تابع مساحت یک مثلث را محاسبه می کند:
# Python function to calculate the area of a triangle
def calculate_triangle_area(base, height):
area = (base * height)/2
return area
print(calculate_triangle_area(12, 3))
تابع بالا دو پارامتر را تعریف می کند: پایه و ارتفاع، حاصلضرب آنها را بر دو تقسیم می کند و نتیجه را به عنوان خروجی برمی گرداند. شما می توانید هر منطقی را که می خواهید تابع شما انجام دهد بنویسید.
درک آرگومان های تابع
در مثالهای قبلی، توابع آرگومانهایی را برای انجام اعمال گرفتهاند. آرگومان های این مثال ها به عنوان آرگومان های مورد نیاز یا موقعیتی شناخته می شوند. در پایتون، آرگومان های شما می توانند یکی از موارد زیر باشند:
- استدلال های موضعی
- آرگومان های کلیدواژه
استدلال های موضعی
آرگومان های موضعی باید به ترتیب تعریف صحیح ارائه شوند. به عنوان مثال، اگر تابعی را با پارامترهای a، b و c تعریف کنید، هنگام فراخوانی این پارامترها باید مقادیری را برای این پارامترها ارسال کنید. اجازه دهید مثال قبلی را بررسی کنیم:
# Python function to calculate the sum of three numbers
def calculate_sum(a, b, c):
return a+b+c
print(calculate_sum(1,2,3)) # returns 6
print(calculate_sum(1000, 300,44)) # returns 1344
print(calculate_sum(12, 4,78)) # returns 94
در برنامه بالا، تابعcalcul_sum() هر زمان که آن را فراخوانی کنیم، سه آرگومان می گیرد. هر آرگومان یک پارامتر مربوطه را نشان می دهد. در اولین فراخوانی تابع، اعداد 1، 2 و 3 نشان دهنده a، b و c هستند.
یک پارامتر در تعریف یک تابع اعلان می شود، در حالی که آرگومان مقداری است که هنگام فراخوانی تابع ارسال می شود. این مقدار نمایشی از پارامتر مربوطه آن است.
استدلال موضعی اجباری است. اگر آنها را اضافه نکنید، یک TypeError دریافت خواهید کرد. مثال زیر این را نشان می دهد:
def calculate_sum(a, b, c):
return a+b+c
print(calculate_sum(1,2)) # raises TypeError
هنگامی که برنامه فوق را روی دستگاه خود اجرا می کنید، با خطای مشابه تصویر زیر مواجه می شوید:
آرگومان های کلیدواژه
هر زمان که یک تابع را فراخوانی می کنید، لزوماً نیازی به ارسال آرگومان های کلیدواژه نیست. آنها آرگومان های اختیاری هستند و نیازی به پیروی از ترتیب خاصی ندارند. پایتون به ما اجازه می دهد از *args و **kwargs برای تعیین آرگومان های کلمه کلیدی استفاده کنیم.
به غیر از استفاده از *args و **kwargs، می توانید مقادیر پیش فرض را برای آرگومان های خود نیز تعیین کنید. اگر هنگام فراخوانی تابع فراموش کنید مقداری اضافه کنید، انجام این کار با خطا مواجه نخواهد شد. این مثال یک تصویر را نشان می دهد:
def calculate_sum(a, b, c=3):
return a+b+c
print(calculate_sum(1,2)) # returns 6
در برنامه فوق، وقتی ()calcul_sum فراخوانی می شود، هیچ آرگومانی برای c وجود ندارد. این روی برنامه تأثیری نخواهد گذاشت زیرا c قبلاً یک مقدار پیش فرض دارد. شما می توانید مقادیر پیش فرض را برای هر تعداد آرگومان که می خواهید مشخص کنید، اما مطمئن شوید که این کار را عاقلانه انجام می دهید.
از توابع برای سازماندهی کد خود استفاده کنید
توابع برای سازماندهی کد شما مفید هستند و آن را خواناتر و کارآمدتر می کنند. با توابع، می توانید کد خود را به تکه های کوچکتر و قابل استفاده مجدد تقسیم کنید که درک و نگهداری آسان تر است. علاوه بر این، اگر نیاز به ایجاد تغییرات در کد خود دارید، فقط باید عملکرد لازم را به جای کل پایه کد تغییر دهید.