
روز ۱۲: تعریف توابع در پایتون
بعد از یادگیری متغیرها، شرطها و حلقهها، خیلی زود به این نقطه میرسیم که کدها شروع میکنند به تکرار شدن. اینجاست که مفهوم تابع وارد بازی میشود و عملاً پایتون را از یک زبان اسکریپتی ساده به یک ابزار حرفهای برای توسعه نرمافزار تبدیل میکند. توابع به ما اجازه میدهند منطق برنامه را یک بار بنویسیم و بارها در قسمتهای مختلف استفاده کنیم، بدون اینکه مجبور باشیم همان کد را دوباره و دوباره کپی کنیم. این موضوع نه فقط باعث تمیزتر شدن کد میشود، بلکه نگهداری، تست و توسعه پروژه را هم بسیار سادهتر میکند. در پروژههای واقعی، چه وب و چه اسکریپتهای ساده، تقریباً هیچ کدی بدون تابع نوشته نمیشود و این مفهوم یکی از پایههای اصلی برنامهنویسی حرفهای با پایتون محسوب میشود.
ساختار تعریف تابع با def در پایتون
در پایتون برای تعریف تابع از کلمه کلیدی def استفاده میکنیم. این کلمه به مفسر پایتون میگوید که قرار است یک بلاک کد قابل استفاده مجدد تعریف شود. بعد از نام تابع، پرانتزها قرار میگیرند که محل تعریف پارامترها هستند و در نهایت با دو نقطه، بدنه تابع شروع میشود. هر چیزی که داخل بدنه تابع قرار میگیرد، تنها زمانی اجرا میشود که تابع صدا زده شود. این موضوع باعث میشود کنترل اجرای برنامه کاملاً دست ما باشد و کدها فقط در زمان نیاز اجرا شوند، نه به صورت خودکار.
def greet():
print("Hello, welcome to Python!")در این مثال یک تابع ساده تعریف شده که فقط یک پیام چاپ میکند. تا زمانی که تابع را صدا نزنیم، هیچ اتفاقی نمیافتد.
greet()
با این فراخوانی، کد داخل تابع اجرا میشود.
پارامترها و ارسال داده به توابع
قدرت واقعی توابع زمانی مشخص میشود که بتوانیم دادههای مختلف را به آنها ارسال کنیم. پارامترها دقیقاً برای همین منظور طراحی شدهاند. با استفاده از پارامترها میتوانیم یک تابع عمومی بنویسیم که با ورودیهای مختلف، خروجیهای متفاوتی تولید کند. این ویژگی باعث میشود توابع انعطافپذیر باشند و در سناریوهای مختلف پروژه قابل استفاده شوند. در پروژههای واقعی، تقریباً تمام توابع حداقل یک یا چند پارامتر دارند.
def greet_user(name):
print("Hello", name)در این مثال، تابع یک پارامتر به نام name دریافت میکند و بر اساس آن پیام را چاپ میکند.
greet_user("Ali")
greet_user("Sara")همان تابع، با دادههای متفاوت، رفتار متفاوتی از خود نشان میدهد.
پارامترهای پیشفرض و سادهسازی استفاده از توابع
گاهی لازم داریم پارامتری داشته باشیم که مقدار پیشفرض داشته باشد تا کاربر تابع مجبور نباشد همیشه آن را ارسال کند. این موضوع در طراحی APIها، توابع کمکی و کدهای عمومی بسیار رایج است. پارامترهای پیشفرض باعث میشوند توابع هم ساده باشند و هم انعطافپذیر. اگر مقدار ارسال نشود، مقدار پیشفرض استفاده میشود و اگر ارسال شود، مقدار جدید جایگزین خواهد شد.
def greet_user(name="Guest"):
print("Hello", name)در این حالت اگر پارامتر ارسال نشود، مقدار Guest استفاده میشود.
greet_user()
greet_user("Reza")این تکنیک در پروژههای واقعی بسیار پرکاربرد است و خوانایی کد را بالا میبرد.
بازگرداندن مقدار با return
تا اینجا توابع فقط خروجی را چاپ میکردند، اما در دنیای واقعی معمولاً نیاز داریم نتیجه یک پردازش را به قسمت دیگری از برنامه برگردانیم. دستور return دقیقاً همین کار را انجام میدهد. با استفاده از return میتوانیم نتیجه محاسبات را ذخیره کنیم، روی آن شرط بگذاریم یا در توابع دیگر استفاده کنیم. بدون return، توابع بیشتر جنبه نمایشی دارند، اما با return به ابزارهای قدرتمند تبدیل میشوند.
def add_numbers(a, b):
return a + bدر این مثال، تابع جمع دو عدد را محاسبه و برمیگرداند.
result = add_numbers(5, 7) print(result)
این ساختار پایه بسیاری از منطقهای پیچیده در پروژههای واقعی است.
تمرین عملی؛ ترکیب توابع با شرطها
برای تثبیت بهتر مفهوم، ترکیب توابع با شرطها یک تمرین بسیار کاربردی است. این مدل کدنویسی دقیقاً همان چیزی است که در پروژههای واقعی زیاد دیده میشود. تابعی که ورودی میگیرد، روی آن پردازش انجام میدهد و بر اساس نتیجه تصمیمگیری میکند.
def check_age(age):
if age >= 18:
return "Adult"
else:
return "Child"در این مثال، تابع بر اساس سن کاربر یک مقدار متنی برمیگرداند که میتواند در بخشهای مختلف برنامه استفاده شود.
جمعبندی روز دوازدهم آموزش پایتون
در این روز یاد گرفتیم که توابع قلب تپنده برنامهنویسی تمیز در پایتون هستند. تعریف تابع با def، استفاده از پارامترها، پارامترهای پیشفرض و بازگرداندن مقدار با return، همگی ابزارهایی هستند که باعث میشوند کدها خواناتر، قابل استفاده مجدد و حرفهایتر شوند. حتی در پروژههای ساده، استفاده درست از توابع تفاوت بزرگی بین کد آماتور و کد حرفهای ایجاد میکند. تمرین مداوم نوشتن توابع کوچک و کاربردی، یکی از بهترین عادتهایی است که هر برنامهنویس پایتون میتواند در خود تقویت کند.
