راهنمای ساده و کاربردی برای درک تابع در پایتون

352
تابع در پایتون چیست

تابع در پایتون یکی از اصول پایه‌ای برنامه‌نویسی در این زبان است که به شما امکان می‌دهد کدهای خود را به‌صورت مؤثرتر و منظم‌تری بنویسید. بسیاری از برنامه‌نویسان تازه‌کار ممکن است به علت عدم درک صحیح از توابع و نحوه استفاده از آن‌ها، کدنویسی را کاری سخت و طاقت‌فرسا بدانند؛ اما خبر خوب اینجاست! با یادگیری اصولی و استفاده صحیح از توابع Python، می‌توانید به‌راحتی بخش زیادی از چالش‌های کدنویسی این زبان برنامه نویسی را پشت سر گذاشته و کدهای بهینه‌تری بنویسید.

 در این مطلب آموزشی از کوئرا بلاگ، به بررسی انواع توابع، کاربردهای آن‌ها و روش‌های استفاده از توابع در پایتون می‌پردازیم.

تابع در پایتون به زبان ساده

در زمینه آموزش برنامه نویسی پایتون و به صورت کلی در حوزه آموزش برنامه ‌نویسی، تابع (Function) مجموعه‌ای از دستورات است که برای انجام کاری خاص تعریف می‌شود. استفاده از توابع باعث می‌شود تا:

  • کدها خواناتر و ماژولار شوند.
  • تکرار کدها کاهش پیدا کند.
  • اشکال‌زدایی و تست کد ساده‌تر باشد.
  • نگهداری و گسترش برنامه در آینده آسان‌تر انجام شود.

تعریف تابع در پایتون

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

def function_name(parameter1, parameter2, ...):
    """
    توضیح کوتاه درباره کاری که تابع انجام می‌دهد.
    """
    # دستورات یا عملیات‌هایی که تابع انجام می‌دهد
    result = some_operation(parameter1, parameter2)
    return result

برای درک بهتر سینتکس فوق به تصویر زیر دقت کنید:

تعریف تابع در پایتون

مثالی ساده از فانکشن در پایتون:

def greet(name):

    return f"سلام {name}!"

print(greet("علی"))

خروجی:

سلام علی

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

مثالی از تابع در پایتون

به همین سادگی، شما اولین تابع خود را در پایتون ساختید.

چرا باید از توابع پایتون استفاده کنیم؟

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

تفاوت تابع و متد در پایتون چیست؟

در پایتون، گاهی به جای «تابع»، واژه‌ی «متد» (method) را می‌شنوید. در واقع، متدها توابعی هستند که به یک شیء (object) وابسته‌اند. در حالی که تابع‌ها می‌توانند مستقل از اشیا تعریف شوند. برای مثال:

text = "python"

print(text.upper())  # متدی که روی رشته اعمال می‌شود

در اینجا upper()‎ نوعی متد است چون به شیء رشته‌ای text وابسته است؛ اما تابع print()‎ یک تابع مستقل محسوب می‌شود که در همه‌جا قابل استفاده است.

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

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

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

۱. توابع پیش‌فرض

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

مثال:

  • print()‎: برای چاپ خروجی
  • len()‎: برای گرفتن طول یک شیء
  • type()‎: برای دریافت نوع داده‌ی یک شیء
print(len("Hello"))  # خروجی: 5

۲. توابع تعریف‌شده توسط کاربر

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

مثال:

def add(a, b):

    return a + b

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

۳. توابع بازگشتی در پایتون

توابع بازگشتی به توابعی اطلاق می‌شود که درون خود، خود را فراخوانی می‌کنند. این نوع توابع برای حل مسائلی که به‌طور طبیعی به صورت بازگشتی تعریف می‌شوند، مناسب هستند.

مثال: تابع فاکتوریل یک مثال رایج از تابع بازگشتی است:

def factorial(n):

    if n == 0 or n == 1:

        return 1

    else:

        return n * factorial(n-1)

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

در این مثال، تابع factorial خود را تا زمانی که به شرایط پایه (0 یا 1) برسد فراخوانی می‌کند.

4. توابع لامبدا در پایتون

توابع لامبدا یا توابع ناشناس، توابعی هستند که به‌طور مستقیم در یک خط کد تعریف شده و معمولاً برای کارهای ساده و موقتی استفاده می‌شوند. این توابع به‌جای استفاده از def، با استفاده از کلمه کلیدی lambda تعریف می‌شوند.

مثال:

square = lambda x: x * x

print(square(4))  # خروجی: 16

توابع لامبدا معمولاً در مواقعی که نیازی به تابعی پیچیده ندارید و تنها نیاز به یک تابع یک‌خطی دارید، بسیار مفید هستند.

5. توابع متغیر

توابع متغیر در پایتون به شما این امکان را می‌دهند که تعداد ورودی‌ها را به‌طور پویا تنظیم کنید. این توابع با استفاده از *args‎‎ یا **kwargs تعریف می‌شوند.

  • *args‎: برای دریافت تعداد متغیری از آرگومان‌های غیرکلیدی.
  • **kwargs: برای دریافت تعداد متغیری از آرگومان‌های کلیدی.

مثال:

def greet(*names):

    for name in names:

        print(f"سلام {name}!")

greet("علی", "حسین", "مریم") 

# خروجی:

# سلام علی!

# سلام حسین!

# سلام مریم!

6. توابع بسته (Function Closures)

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

مثال:

def outer():

    x = 10

    def inner():

        return x

    return inner

closure = outer()

print(closure())  # خروجی: 10

در این مثال، تابع inner به متغیر x که در خارج از آن تعریف شده است، دسترسی دارد.

مهم‌ترین توابع پایتون

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

۱. تابع print در پایتون

تابع print()‎ یکی از توابع پایه‌ای و ابتدایی در پایتون است که برای چاپ خروجی‌ها به‌کار می‌رود. این تابع می‌تواند انواع داده‌ها را به صورت متنی چاپ کند.

مثال:

print("سلام کوئرا!")  # خروجی: سلام کوئرا!

2. تابع len

تابع len()‎ در پایتون برای گرفتن طول یا اندازه‌ی هر شیء قابل شمارش (مانند لیست‌ها، رشته‌ها، دیکشنری‌ها و …) استفاده می‌شود.

مثال:

items = ["apple", "banana", "cherry"]

print(len(items))  # خروجی: 3

۳. تابع type در برنامه نویسی پایتون

تابع type()‎ برای گرفتن نوع داده‌ی یک شیء استفاده می‌شود. این تابع می‌تواند برای دیباگ کردن یا بررسی نوع داده‌های متغیرها مفید باشد.

مثال:

print(type(5))  # خروجی: <class 'int'>

print(type("Hello"))  # خروجی: <class 'str'>

۴. تابع input

تابع input()‎ برای دریافت ورودی از کاربر استفاده می‌شود. این ورودی به‌طور پیش‌فرض به صورت رشته (string) بازگشت داده می‌شود.

مثال:

name = input("نام خود را وارد کنید: ")

print(f"سلام {name}!")

۵. تابع sum

تابع sum()‎ برای محاسبه مجموع تمام عناصر یک iterable یا به اصطلاح مجموعه داده (مانند لیست یا تاپل) به‌کار می‌رود.

مثال:

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

print(sum(numbers))  # خروجی: 15

۶. تابع max و min

توابع max()‎ و min()‎ به‌ترتیب برای پیدا کردن بزرگ‌ترین و کوچک‌ترین عدد یا عنصر در مجموعه‌ای از داده‌ها (مثل لیست یا تاپل) استفاده می‌شوند.

مثال:

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

print(max(numbers))  # خروجی: 5

print(min(numbers))  # خروجی: 1

۷. تابع sorted

تابع sorted()‎ برای مرتب‌سازی نوعی مجموعه داده (مانند لیست) به‌صورت صعودی یا نزولی استفاده می‌شود. این تابع نوعی نسخه جدید از مجموعه مرتب‌شده را باز می‌گرداند، بدون اینکه ترتیب اصلی داده‌ها را تغییر دهد.

مثال:

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

print(sorted(numbers))  # خروجی: [1, 2, 3, 5, 8]

۸. تابع range

تابع range()‎ برای ایجاد دنباله‌ای از اعداد در یک بازه خاص استفاده می‌شود. این تابع به‌طور گسترده در حلقه‌های for برای پیمایش استفاده می‌شود.

مثال:

for i in range(1, 6):

    print(i)

خروجی:

1

2

3

4

5

۹. تابع zip

تابع zip()‎ برای ترکیب دو یا چند مجموعه داده به‌صورت هم‌زمان استفاده می‌شود. این تابع مجموعه‌ای از تاپل‌ها را برمی‌گرداند که هرکدام شامل مقادیری از عناصر هر مجموعه داده است.

مثال:

names = ["Ali", "Hassan", "Mina"]
scores = [85, 90, 88]
for name, score in zip(names, scores):
    print(f"{name}: {score}")

خروجی:

Ali: 85
Hassan: 90
Mina: 88

10. تابع map در پایتون

تابع ()map برای اعمال تابعی به تمام عناصر یک مجموعه از داده‌ها استفاده می‌شود و نتیجه را به صورت مجموعه‌ای جدید از داده‌ها باز می‌گرداند.

مثال:

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

squared_numbers = map(lambda x: x**2, numbers)

print(list(squared_numbers))  # خروجی: [1, 4, 9, 16, 25]

11. تابع filter

تابع filter()‎ مشابه map()‎ است اما این تابع تنها عناصری را که شرط خاصی را برآورده می‌کنند، از مجموعه داده اصلی انتخاب می‌کند.

مثال:

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

even_numbers = filter(lambda x: x % 2 == 0, numbers)

print(list(even_numbers))  # خروجی: [2, 4]

12. تابع abs

تابع abs()‎ برای محاسبه مقدار مطلق یک عدد استفاده می‌شود.

مثال:

print(abs(-5))  # خروجی: 5

کلام آخر

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

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

پرسش‌های متداول

تابع در پایتون چیست؟

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

چگونه یک تابع جدید در پایتون تعریف کنیم؟

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

تفاوت تابع لامبدا با تابع معمولی چیست؟

توابع لامبدا توابعی هستند که در یک خط و بدون نیاز به نام تعریف می‌شوند. این توابع معمولاً برای کارهای ساده و کوتاه استفاده می‌شوند.توابع لامبدا تنها می‌توانند شامل یک عبارت باشند و نمی‌توانند شامل چندین دستور یا عملیات پیچیده باشند.

تابع map در پایتون چه کاری انجام می‌دهد؟

تابع map برای اعمال تابعی به تمام عناصر یک مجموعه داده (مانند لیست یا تاپل) استفاده می‌شود و نتیجه را به‌صورت یک مجموعه داده جدید برمی‌گرداند.

آیا می‌توان توابع در پایتون را درون یکدیگر تعریف کرد؟

بله، پایتون از توابع بازگشتی و توابع بسته یا کلوژرها (closures) پشتیبانی می‌کند که به شما این امکان را می‌دهد که توابع درون یکدیگر تعریف و استفاده کنید.

آموزش برنامه نویسی با کوئرا کالج
k.bahrami

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

اشتراک در
اطلاع از
guest


0 دیدگاه‌
قدیمی‌ترین
تازه‌ترین بیشترین واکنش
بازخورد (Feedback) های اینلاین
View all comments