الگوریتم اول

لطفا صبر کنید...

آشنایی با توابع در پایتون: انواع، نحوه تعریف و کاربردها

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

۱. تعریف تابع با def برای ایجاد یک تابع، از کلمه کلیدی def استفاده می‌کنیم.

ساختار کلی:

def نام_تابع(پارامتر1, پارامتر2, ...):
    # بدنه تابع
    return مقدار_برگشتی  # (اختیاری)

اگر return نباشد، تابع مقدار None برمی‌گرداند.

مثال ساده:

def greet(name):
    return f"سلام {name}!"

print(greet("علی"))

۲. انواع توابع در پایتون

1.2. توابع بدون مقدار بازگشتی (void function) این توابع فقط عملیاتی را انجام می‌دهند ولی مقدار خاصی برنمی‌گردانند.

مثال:

def say_hello():
    print("سلام!")
say_hello()

این تابع فقط پیام "سلام!" را چاپ می‌کند و مقدار خاصی برنمی‌گرداند.

۲.۲. توابع با مقدار بازگشتی (return function) این توابع پس از پردازش، یک مقدار را برمی‌گردانند که می‌توان آن را ذخیره یا استفاده کرد.

مثال:

def add(a, b):
    return a + b

result = add(5, 3)
print(result)  # خروجی: 8

3.2. توابع با مقدار پیش‌فرض برای پارامترها می‌توان برای پارامترها مقدار پیش‌فرض تعیین کرد تا در صورت عدم ارسال مقدار، از مقدار پیش‌فرض استفاده شود.

مثال:

def greet(name="مهمان"):
    return f"سلام {name}!"

print(greet())       # خروجی: سلام مهمان!
print(greet("علی"))  # خروجی: سلام علی!

4.2. توابع با تعداد پارامتر نامشخص (*args) اگر بخواهیم تابعی تعداد نامشخصی از پارامترها را بپذیرد، از *args استفاده می‌کنیم.

مثال:

def sum_all(*numbers):
    return sum(numbers)

print(sum_all(1, 2, 3, 4, 5))  # خروجی: 15

در اینجا، *numbers تمام آرگومان‌های ورودی را به‌صورت یک tuple دریافت می‌کند.

5.2. توابع با پارامترهای نام‌گذاری‌شده (**kwargs) برای ارسال آرگومان‌ها به‌صورت کلید=مقدار و دریافت آن‌ها در قالب dictionary، از **kwargs استفاده می‌کنیم.

مثال:

def show_info(**info):
    for key, value in info.items():
        print(f"{key}: {value}")

show_info(name="علی", age=25, city="تهران")

خروجی:

name: علی  
age: 25  
city: تهران  

6.2. توابع بازگشتی (Recursive Functions) توابع بازگشتی، توابعی هستند که خودشان را فراخوانی می‌کنند.

مثال (محاسبه فاکتوریل عدد):

def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # خروجی: 120

در اینجا، تابع factorial خودش را تا زمانی که n == 1 شود، صدا می‌زند.

۳. تابع‌های lambda (توابع ناشناس یا یک‌خطی) توابع lambda برای ایجاد توابع ساده و کوتاه بدون نیاز به def استفاده می‌شوند.

ساختار کلی:

lambda ورودی‌ها: خروجی

مثال:

add = lambda a, b: a + b
print(add(3, 5))  # خروجی: 8

مثال دیگر:

square = lambda x: x ** 2
print(square(4))  # خروجی: 16

۴. توابع درون توابع (Nested Functions) می‌توان درون یک تابع، تابع دیگری تعریف کرد.

مثال:

def outer_function():
    def inner_function():
        return "تابع داخلی اجرا شد"
    return inner_function()

print(outer_function())

۵. توابع به‌عنوان آرگومان در پایتون، توابع را می‌توان به‌عنوان آرگومان به توابع دیگر ارسال کرد.

مثال:

def apply_function(func, value):
    return func(value)

def double(x):
    return x * 2

print(apply_function(double, 5))  # خروجی: 10

۶. توابع با مقدار بازگشتی چندگانه در پایتون، می‌توان چند مقدار را از یک تابع بازگرداند.

مثال:

def get_numbers():
    return 1, 2, 3

a, b, c = get_numbers()
print(a, b, c)  # خروجی: 1 2 3

در اینجا، تابع سه مقدار را به‌صورت tuple برمی‌گرداند که در متغیرهای جداگانه ذخیره می‌شوند.