انواع تابع از نظر خروجی در پایتون

Please login to bookmark Close

انواع تابع از نظر خروجی

در واقع، در این درس انواع تابع از نظر خروجی را از پایه و با مثال یاد می‌گیرید.

بنابراین در درس قبل ورودی تابع را کامل بررسی کردیم. حالا ببینیم تابع چطور نتیجه را برمی‌گرداند.

تابعی که چیزی برنمی‌گرداند

def log(message):
    print("[LOG]", message)

result = log("شروع شد")
print(result)
[LOG] شروع شد
None

همچنین، این تابع کارش را انجام می‌دهد ولی چیزی تحویل نمی‌دهد. این غلط نیست؛ خیلی از توابع فقط کاری انجام می‌دهند.

تابعی که یک مقدار برمی‌گرداند

def area(width, height):
    return width * height

print(area(3, 4))

تابعی که چند مقدار برمی‌گرداند

در واقع، در خیلی از زبان‌ها این کار دردسر دارد. در پایتون کافی است با کاما جداشان کنید:

def min_max(numbers):
    return min(numbers), max(numbers)

lowest, highest = min_max([4, 9, 2, 7])

print(lowest)
print(highest)
2
9

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

result = min_max([4, 9, 2, 7])
print(result)
print(type(result))
(2, 9)
<class 'tuple'>

پس آن خط lowest, highest = ... همان بازکردن تاپل است که در درس تاپل یاد گرفتید. مفهوم جدیدی در کار نیست.

برگشت زودهنگام

تابع می‌تواند چند جا return داشته باشد. هر کدام زودتر اجرا شود، کار تمام است:

def divide(a, b):
    if b == 0:
        return "تقسیم بر صفر ممکن نیست"
    return a / b

print(divide(10, 2))
print(divide(10, 0))
5.0
تقسیم بر صفر ممکن نیست

این الگو که شرط‌های خطا را اول تابع بررسی کنید و زود برگردید، کد را خیلی خواناتر می‌کند. جایگزینش شرط‌های تودرتویی است که خواندنشان سخت می‌شود.

ولی یک نکته‌ی مهم: در این مثال، تابع گاهی عدد برمی‌گرداند و گاهی رشته. این کار را در کد جدی نکنید، چون کسی که تابعتان را صدا می‌زند نمی‌داند باید منتظر چه نوعی باشد. در درس مدیریت خطا می‌بینید که راه درستش چیست.

اشتباهات رایج

کد بعد از return

def area(width, height):
    return width * height
    print("محاسبه انجام شد")

آن print هرگز اجرا نمی‌شود و پایتون هم هشداری نمی‌دهد.

فراموش کردن return در بعضی مسیرها

def check(age):
    if age >= 18:
        return "بزرگسال"

print(check(20))
print(check(10))
بزرگسال
None

اگر هیچ return اجرا نشود، خروجی None است. مطمئن شوید تمام مسیرهای تابع، مقدار مشخصی برمی‌گردانند.

جمع‌بندی

تابع می‌تواند هیچ مقداری برنگرداند، یک مقدار برگرداند، یا چند مقدار که در واقع یک تاپل هستند. تابعی که return ندارد، None می‌دهد.

در درس بعدی شکل کوتاه‌شده‌ی تابع را یاد می‌گیرید؛ همان lambda که در درس مرتب‌سازی دیکشنری به آن برخوردید.

برای مطالعه‌ی بیشتر می‌توانید به مستندات رسمی پایتون سر بزنید.

این درس بخشی از دوره آموزش پایتون مقدماتی است.

Please login to bookmark Close
پیشرفت شما در «دوره آموزش پایتون مقدماتی» (76%)
نظرات

دیدگاهتان را بنویسید

76%
پیشرفت

سرفصل دوره

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

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

تنظیمات

انتخاب زبان
تغییر تم