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

توابع در پایتون به چه شکل تعریف میشوند؟
برای اینکه بتوانید یک تابع را در زبان پایتون تعریف کنید، ابتد باید «نحو» (Syntax) آن را بیاموزید. برای این کار در زبان پایتون، از کلمه کلیدی def استفاده میشود و بعد از آن، باید نام تابع خود را بنویسید و سپس یک جفت پرانتز بگذارید. حال میتوانید به یک بلوک تورفته دسترسی داشته باشید که میتوانید کدهای خود را داخل آن بنویسید. مثلا، قطعه کد زیر را ببینید:
def my_function():
# code goes here
حال ممکن است این سوال پیش بیاید که ورودیهای توابع در پایتون به چه شکل هستند؟ برای اینکه بتوانید به یک تابع در این زبان ورودی دهید، میتوانید به شکل زیر عمل کنید:
def greet(name):
print(f”Hello, {name}!”)
همانطور که میبینید، یک ورودی name به تابع داده شده و همان را چاپ کردهایم. مثلا اگر قطعه کد زیر را اجرا کنید:
greet(“Alice”)
greet(“Bob”)
میتوانید خروجیهای زیر را دریافت کنید:
Alice
Bob
چند نوع تابع در زبان برنامهنویسی پایتون داریم؟
آشنایی با مولفهها و انواع تابع به شما کمک میکند تا بتوانید به شکل بهتری از این ابزار، در کدهای خود استفاده کنید. از جمله انواع رایج توابع در زبان پایتون، میتوان به موارد زیر اشاره کرد:
1- توابع داخلی: این توابع، روی خود پایتون تعریف شدهاند و محض اینکه شما پایتون را روی سیستم خود نصب کنید، این امکان برایتان وجود دارد که بتوانید از آنها استفاده کنید.
2- توابع تعریف شده توسط کاربر: اگر توسعهدهنده هستید، میتوانید خودتان توابعی را در پایتون تعریف کنید که وظایف خاصی را انجام دهند. آنها معمولا از قوانین توابع داخلی پایتون پشتیبانی میکنند.
3- توابع ناشناس یا لامبدا: این توابع، با استفاده از کلمه کلیدی lambda تعریف میشوند. آنها معمولا برای انجام یک عملیات کوتاه تعریف شده و تنها یک بار استفاده میشوند.
برای اینکه درک درستی از توابع لامبدا در پایتون به دست بیاورید، مثال زیر را مشاهده کنید:
square = lambda x: x * x
print(square(5)) # Output: 25

آشنایی با برخی از مهمترین توابع داخلی پایتون
حال که روش ساخت یک تابع در پایتون را آموختید، اجازه دهید تا بررسی کنیم که توابع داخلی پایتون به چه شکل کار میکنند:
1- zip(): این تابع، میتواند انواع لیستها و تاپلها را در یک تکرارکننده از تاپلها با یکدیگر ترکیب کند. وقتی که قصد جفتکردن عناصر در یک لیست را دارید، میتوانید از این تابع استفاده کنید. قطعه کد زیر را مشاهده کنید:
names = [‘VK’, ‘MSD’, ‘RS’]
scores = [85, 92, 88]
# Pairing names with scores
paired = list(zip(names, scores))
print(paired) # Output: [(‘VK’, 85), (‘MSD’, 92), (‘RS’, 88)]
2- enumerate(): اگر یک تکرار داشته باشید که بخواهید یک شمارنده به آن اضافه کنید، میتوانید از این تابع استفاده کنید. برای درک درست کارکرد این تابع، مثال زیر را ببینید:
fruits = [‘apple’, ‘banana’, ‘cherry’]
for index, fruit in enumerate(fruits):
print(index, fruit)
# Output:
# 0 apple
# 1 banana
# 2 cherry
انواع روشهای مقداردهی به ورودیهای تابع در پایتون
برای اینکه بتوانید از توابع در پایتون استفاده کنید، باید روشهای مقداردهی به ورودیهای آن را بیاموزید که به شکل زیر انجام میشود:
1- در روش اول برای مقداردهی ورودیهای فانکشن در پایتون، میتوانید از مقادیر پیش فرض کمک بگیرید. مثلا قطعه کد زیر را مشاهده کنید:
# Python program to demonstrate
# default arguments
def myFun(x, y=50):
print(“x: “, x)
print(“y: “, y)
# Driver code (We call myFun() with only
# argument)
myFun(10)
با اجرای این قطعه کد، مشاهده میکنید که ابتدا عدد 10 و سپس عدد 50 برای شما چاپ میشود.
2- در روش دوم، میتوانید مقداردهی را با استفاده از Keyword انجام دهید. به این ترتیب، به تابع اجازه میدهیم تا نام آرگومان را با مقادیر مشخص شده تعیین کرده و به این ترتیب، نیازی به یادآوری ترتیب پارامترهای ورودی نداشته باشد. مثلا، قطعه کد زیر را ببینید:
# Python program to demonstrate Keyword Arguments
def student(firstname, lastname):
print(firstname, lastname)
# Keyword arguments
student(firstname=’Geeks’, lastname=’Practice’)
student(lastname=’Practice’, firstname=’Geeks’)
با اجرای این قطعه کد، میبینید که خروجی زیر برای شما چاپ میشود:
Geeks Practice
Geeks Practice
3- ورودیهای Positional: وقتی که قصد داریم ورودیها را در طول فراخوانی به تابع ارائه دهیم، میتوانیم از این نوع ورودی استفاده کنیم. برای اینکه درک درستی از این نوع ورودی به دست بیاورید، مثال زیر را ببینید:
def nameAge(name, age):
print(“Hi, I am”, name)
print(“My age is “, age)
# You will get correct output because
# argument is given in order
print(“Case-1:”)
nameAge(“Suraj”, 27)
# You will get incorrect output because
# argument is not in order
print(“\nCase-2:”)
nameAge(27, “Suraj”)
با اجرای این کد، میبینید که خروجی زیر برای شما چاپ میشود:
Case-1:
Hi, I am Suraj
My age is 27
Case-2:
Hi, I am 27
My age is Suraj
4- ورودیهای دلخواه Keywod: این نوع ورودیها، میتوانند تغداد متغیری از ورودیها را با استفاده از نمادهای خاص، به انواع توابع در پایتون ارسال کنند. مثلا، قطعه کد زیر را مشاهده کنید:
# Python program to illustrate
# *args for variable number of arguments
def myFun(*argv):
for arg in argv:
print(arg)
myFun(‘Hello’, ‘Welcome’, ‘to’, ‘GeeksforGeeks’)
با اجرای این قطعه کد، میبینید که خروجی زیر برای شما چاپ میشود:
Hello
Welcome
to
GeeksforGeeks
بهعنوان یک مثال دیگر از این نوع ورودی، قطعه کد زیر را مشاهده کنید:
# Python program to illustrate
# *kwargs for variable number of keyword arguments
def myFun(**kwargs):
for key, value in kwargs.items():
print(“%s == %s” % (key, value))
# Driver code
myFun(first=’Geeks’, mid=’for’, last=’Geeks’)
با اجرای این کد، خروجی زیر برای شما چاپ میشود:
first == Geeks
mid == for
last == Geeks

آیا میتوان داخل یک تابع، تابع دیگری تعریف کرد؟
در آموزش توابع در پایتون، باید بدانید که میتوانید خیلی راحت، یک تابع را داخل تابع دیگری تعریف کنید. این نوع از توابع، با نام توابع تودرتو شناخته میشوند. اولین نکته درباره این توابع، این است که شما در توابع داخلی، به تعداد محدودی از متغیرها دسترسی خواهید داشت. وقتی که میخواهید هرچیزی که خارج از عملکرد موردانتظار شما رخ میدهد را مدیریت کنید، میتوانید از توابع تودرتو در پایتون استفاده کنید. در این نوع توابع، میتوانید از دستور return به دلخواه استفاده کنید یا نکنید.
برای اینکه بتوانید درک درستی از این توابع به دست بیاورید، قطعه کد زیر را مشاهده کنید:
# Python program to
# demonstrate accessing of
# variables of nested functions
def f1():
s = ‘I love GeeksforGeeks’
def f2():
print(s)
f2()
# Driver’s code
f1()
اگر این قطعه کد را اجرا کنید، میتوانید خروجی زیر را از آن دریافت کنید:
I love GeeksforGeeks
برای کارکردن با توابع در پایتون، با مفهوم داکاسترینگ آشنا شوید
یکی از مفاهیم مهمی که در خصوص توابع در زبان پایتون مطرح میشود، مفهوم داکاسترینگ (Docstring) است. اولین رشتهای که بعد از تابع میآید، بهعنوان داک استرینگ شناخته میشود. در واقع، این استرینگ یا رشته، برای توصیف عملکرد تابع استفاده میشود. اینکه شما بخواهید از داکاسترینگ (Docstring) استفاده کنید یا نه کاملا اختیاری خواهد بود، ولی اگر از آن استفاده کنید، کدهای شما به شکل تمیزتری در میآیند. برای اینکه بتوانید به شکل بهتری با این مفهوم آشنا شوید، دستور زیر را مشاهده کنید:
Syntax: print(function_name.__doc__)
آشنایی با مفهوم توابع برگشتی در زبان پایتون
توابع برگشتی، یکی از پرکاربردترین انواع توابع در زبان برنامهنویسی پایتون به شمار میآیند که دامنه و طول عمر متغیرها در آنها از اهمیت زیادی برخوردار بوده و باید دقت زیادی به آن داشته باشید. در این توابع، در واقع یک تابع خودش را فراخوانی میکند. در بسیاری از کاربردها، ممکن است شما نیاز داشته باشید که از توابع بازگشتی برای حل مسائل ریاضی و برگشتی استفاده کنید. البته وقتی که قصد استفاده از این توابع را دارید، باید نهایت احتیاط را داشته باشید، چراکه اگر شروط اجرای توابع را به دقت تعریف نکنید، ممکن است در یک حلقه فراخوانی تابع بینهایت بیفتید.
در ادامه مثال توابع در پایتون را برای شما آوردهایم که نحوه استفاده از توابع بازگشتی را به شما آموزش میدهد:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n – 1)
print(factorial(4))
اگر این قطعه کد را اجرا کنید، مشاهده میکنید که خروجی زیر برای شما چاپ میشود:
24
پیشنهاد مقاله: محاسبه فاکتوریل در پایتون
آیا میتوان یک لیست را بهعنوان ورودی به تابع داد؟
بله یکی از مهمترین قابلیتهایی که در زبان برنامهنویسی پایتون برای شما فراهم شده، این است که میتوانید یک لیست را بهعنوان ورودی به تابع خود دهید. این لیست، ممکن است از عناصر مختلفی تشکیل شده باشد. برای مثال، ما در قطعه کد زیر این کار را برای شما انجام دادهایم تا نحوه کار آن را به شما آموزش دهیم:
def my_function(food):
for x in food:
print(x)
fruits = [“apple”, “banana”, “cherry”]
my_function(fruits)
همانطور که میبینید، میتوان خیلی راحت انواع لیستها را بهعنوان ورودی به یک تابع داد و به این ترتیب، به هر عنصر از این لیست دسترسی داشت.
چطور میتوانیم مقادیر را از یک تابع برگردانیم؟
وقتی که قصد استفاده از فانکشن ها در پایتون را دارید، گاهی اوقات ممکن است نیازمند این شوید که مقداری را از تابع برگردانید. برای مثال، فرض کنید که تابع شما، محاسباتی را انجام میدهد و بعد از انجام محاسبات، نتیجه را به شما برمیگرداند. در این شرایط، میتوانید در داخل تابع خود، از کلمه کلیدی return در پایتون استفاده کنید. برای اینکه بتوانید نحوه انجام این کار را بیاموزید، مثال زیر را مشاهده کنید:
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
همانطور که در این تابع نیز مشاهده میکنید، هر مقداری که بهعنوان ورودی به تابع بدهید، آن را در عدد 5 ضرب کرده و نتیجه را بهعنوان خروجی به شما تحویل میدهد که میتوانید مقدار آن را بهصورت مستقیم استفاده کرده یا به چاپ برسانید.
پیشنهاد مقاله: آموزش نصب پایتون
سخن پایانی
برای اینکه بتوانید از کدهایی که مینویسید، بعدها باز هم استفاده کنید، یکی از بهترین روشها برای شما این خواهد بود که از توابع استفاده کنید. آنها علاوه بر اینکه قابلیت استفاده مجدد را برای شما فراهم میکنند به تمیزتر شدن کدهای شما هم کمک میکنند. برای اینکه بتوانید به بهترین شکل از توابع استفاده کنید، نیازمند این هستید که انواع آنها را بشناسید، نحوه ورودی دادن به توابع را بیاموزید و یاد بگیرید که به چه شکل باید خروجیها را از تابع خود دریافت کنید.
موسسه آموزشی بامداد، یکی از بهترین موسسات آموزشی در سطح کشور است که به شما کمک میکند تا بتوانید با زبان برنامهنویسی پایتون آشنا شده و از این زبان برنامهنویسی استفاده کنید. برای اینکه نحوه کارکردن با توابع را در این زبان بیاموزید، به شما پیشنهاد میکنیم حتما از خدمات این موسسه آموزشی استفاده کرده و با شرکت در دورههای آن، زبان پایتون را بیاموزید.


