Functools در پایتون و تابع def در پایتون (آموزش به زبان ساده)

رتبه: 0 ار 0 رای sssss
لوگو پایتون
نویسنده: تیم تولید محتوا زمان مطالعه 6 دقیقه
Banner Image

پایتون به عنوان یکی از زبان‌های برنامه‌نویسی پویا و پرکاربرد، ابزارها و کتابخانه‌های متنوعی را برای توسعه‌دهندگان فراهم می‌کند.دو مورد از این ابزارها که بسیار مهم و کاربردی هستند، ماژول functools و تعریف توابع با استفاده از def می‌باشند.در این مقاله به بررسی این دو موضوع خواهیم پرداخت و کاربردهای آن‌ها را مورد بحث قرار خواهیم داد.

بخش اول: تابع def در پایتون

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

1.1.تعریف توابع

برای تعریف یک تابع در پایتون، ابتدا باید از کلمه کلیدی def استفاده کرده و سپس نام تابع را تعیین کنید.به دنبال آن، پرانتزهایی قرار می‌گیرند که می‌توانند شامل پارامترهای ورودی باشند.بعد از پرانتزها، یک علامت دونقطه (:) قرار داده می‌شود و در خطوط بعد، بلوک کد تابع نوشته می‌شود که باید با یک تورفتگی (indentation) همراه باشد.

def greet(name):

    print(f"Hello, {name}!")

در مثال بالا، تابعی به نام greet تعریف شده است که یک پارامتر ورودی به نام name می‌پذیرد و پیام خوشامدگویی را چاپ می‌کند.

تمرین های برنامه نویسی پایتون+ مثال برنامه نویسی پایتون

1.2.بازگشت مقادیر

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

def add(a, b):

    return a + b

در مثال بالا، تابع add دو پارامتر a و b را به عنوان ورودی می‌پذیرد و مجموع آن‌ها را به عنوان خروجی باز می‌گرداند.

1.3.پارامترهای پیش‌فرض

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

def greet(name="World"):

    print(f"Hello, {name}!")

در این مثال، اگر تابع greet بدون ورودی فراخوانی شود، به طور پیش‌فرض پیام "!Hello, World" چاپ خواهد شد.

1.4.پارامترهای نامحدود

پایتون امکان تعریف توابعی را فراهم می‌کند که تعداد نامحدودی از پارامترها را بپذیرند.این کار با استفاده از  args  و kwargs  انجام می‌شود.

def sum_all(args):

    return sum(args)

 

def print_info(kwargs):

    for key, value in kwargs.items():

        print(f"{key}: {value}")

در مثال اول، تابع sum_all تعداد نامحدودی از اعداد را به عنوان ورودی پذیرفته و مجموع آن‌ها را باز می‌گرداند.در مثال دوم، تابع print_info تعداد نامحدودی از پارامترهای کلید-مقدار (key-value) را پذیرفته و آن‌ها را چاپ می‌کند.

آموزش کامل هوش مصنوعی: آموزش هوش مصنوعی از صفر تا صد با 14 درس+ جزوه

بخش دوم: ماژول functools در پایتون

ماژول functools مجموعه‌ای از ابزارهای کاربردی برای کار با توابع و callable ها در پایتون فراهم می‌کند.این ماژول شامل تعدادی تابع و دکوریتور است که به توسعه‌دهندگان کمک می‌کنند تا با توابع به شکلی مؤثرتر و کارآمدتر کار کنند.
functools پایتون

 2.1.دکوریتور functools.lru_cache@

یکی از کاربردی‌ترین دکوریتورهای موجود در functools، دکوریتور functools.lru_cache@ است که برای بهینه‌سازی و افزایش سرعت اجرای توابع از طریق ذخیره‌سازی نتایج قبلی (caching) استفاده می‌شود.

 

import functools

 

@functools.lru_cache(maxsize=128)

def fibonacci(n):

    if n < 2:

        return n

    return fibonacci(n-1) + fibonacci(n-2)

در این مثال، تابع fibonacci با استفاده از دکوریتور functools.lru_cache@ بهینه‌سازی شده است.این دکوریتور نتایج محاسبات قبلی را ذخیره می‌کند و در صورت نیاز به همان نتیجه، از حافظه بازیابی می‌کند به جای محاسبه مجدد.

2.2.دکوریتور functools.wraps@

هنگام تعریف دکوریتورهای سفارشی، استفاده از دکوریتور functools.wraps@ می‌تواند کمک کند تا اطلاعات تابع اصلی مانند نام، داکیومنت و غیره حفظ شوند.

import functools

 

def my_decorator(func):

    @functools.wraps(func)

    def wrapper(args, kwargs):

        print("Before the function call")

        result = func(args, kwargs)

        print("After the function call")

        return result

    return wrapper

 

@my_decorator

def say_hello(name):

    print(f"Hello, {name}!")

در این مثال، دکوریتور my_decorator با استفاده از functools.wraps@ تعریف شده است تا اطلاعات تابع say_hello حفظ شود.

پایتون برای چه سنی مناسب است؟ چقدر طول می کشد؟

2.3.تابع functools.partial

تابع functools.partial به شما امکان می‌دهد تا نسخه‌های جدیدی از توابع ایجاد کنید که برخی از پارامترهای آن‌ها از پیش تنظیم شده‌اند.

import functools

 

def power(base, exponent):

    return base  exponent

 

square = functools.partial(power, exponent=2)

cube = functools.partial(power, exponent=3)

 

print(square(5))  # Output: 25

print(cube(5))    # Output: 125

در این مثال، دو تابع جدید square و cube از تابع اصلی power ایجاد شده‌اند که به ترتیب مقادیر 2 و 3 را به عنوان پارامتر exponent از پیش تنظیم کرده‌اند.

2.4.تابع functools.reduce

تابع functools.reduce برای اعمال یک تابع به ترتیبی از مقادیر (iterable) و کاهش آن‌ها به یک مقدار واحد استفاده می‌شود.این تابع به عنوان یک ابزار قوی برای ترکیب مقادیر در یک ترتیب استفاده می‌شود.

import functools

 

numbers = [1, 2, 3, 4, 5]

result = functools.reduce(lambda x, y: x + y, numbers)

print(result)  # Output: 15

 

در این مثال، تابع reduce از functools استفاده شده تا مجموع تمام اعداد در لیست numbers محاسبه شود.

دانلود کنید: ۴ جزوه عالی pdf آموزش پایتون

2.5. دکوریتور functools.cache@

دکوریتور functools.cache@ به عنوان یک دکوریتور استفاده می‌شود و قادر است مقادیر بازگشتی یک تابع را بر اساس ورودی‌ها ذخیره کند. این دکوریتور در پایتون نسخه 3.9 و بالاتر در دسترس است.

اندازه حافظه کش نامحدود است و به همین دلیل، دیکشنری ذخیره شده می‌تواند به اندازه‌های بسیار بزرگ رشد کند.

from functools import cache

 

@cache

def fibonacci(n):

    if n in [0, 1]:

        return n

    else:

        return fibonacci(n-1) + fibonacci(n-2)

 

print(fibonacci(4)) # called 5 times

print(fibonacci(11)) # called 7 times rather than 12 times

 

حتما دانلود کنید: فیلم های صفر تا صد پایتون

نتیجه‌گیری

ماژول functools و کلمه کلیدی def در پایتون دو ابزار قدرتمند هستند که به توسعه‌دهندگان کمک می‌کنند کدهای خود را به شکل بهینه‌تر و کارآمدتری بنویسند.توابع با استفاده از def به شما امکان می‌دهند کدهای خود را تفکیک و سازمان‌دهی کنید، در حالی که functools ابزارهای پیشرفته‌تری برای کار با توابع ارائه می‌دهد که می‌توانند بهینه‌سازی و توسعه کدها را بهبود بخشند.با استفاده مناسب از این ابزارها، می‌توانید کدهای پایتون خود را ساده‌تر، خواناتر و کارآمدتر کنید.


profile name
تیم تولید محتوا

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

کلاس های آنلاین مرتبط

مشاهده همه
سایر مقالات آموزشی
سایر مقالات آموزشی

مدرس : حامد رضوانی

0

*برای مشاهده قیمت کلاس روی رزرو کلاس آنلاین کلیک کنید*

رزرو کلاس آنلاین

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

1 2 3 4 5

0 نظر درباره «Functools در پایتون و تابع def در پایتون (آموزش به زبان ساده)»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید