زبان برنامهنویسی پایتون بخاطر چندکاره بودن و سادگی در استفاده و آموزش مشهور شده است. ارائه مجموعهای غنی از ویژگیهای خاص و امکانات توسط این زبان برنامه نویسی، باعث محبوبیت زیاد پایتون در بین تازهکاران، دانشجویان و برنامهنویسان حرفهای شده است. تابع def در پایتون به عنوان دروازهای برای تعریف و استفاده از توابع سفارشی کاربران عمل میکند. عبارت کلیدی def مخفف کلمه Define به معنی تعریف کردن است. این کلمه جزئی ضروری از سینتکس پایتون است و به توسعهدهندگان کمک میکند تا بلاکهای کدی تعریف کنند که قابلیت استفاده مجدد در برنامه را دارد. برنامهنویسان با کپسوله کردن مجموعهای از دستورالعملها درون تابعی نامگذاری شده میتوانند سازماندهی کدها را ارتقا بدهند. همچنین قابلیت استفاده مجدد از کدها را بیشتر کنند و کارآمدی کلی برنامه را نیز افزایش دهند.
در این مطلب از مجله فرادرس درباره تابع def در پایتون صحبت کردهایم. میآموزیم که چگونه با استفاده از این تابع، توابع سفارشی خود را تعریف کنیم. همچنین، میآموزیم که چگونه برنامه خود را به دو قسمت توابع تعریف شده توسط کاربر و بخشی که از این توابع استفاده میکنند، تقسیم کنیم. در این مطلب میآموزیم که توابع در زبان برنامه نویسی پایتون چطور کار میکنند و چرا استفاده از توابع مفید است. چگونگی ساخت تابع مورد نظر خودمان با استفاده از تابع def در پایتون را خواهیم آموخت و با مکانیزمهای ارسال آرگومان به تابع آشنا میشویم. همچنین میبینیم که چگونه از تابع تعریف شده کاربر باید دادهها را به محیط فراخوانی تابع ارسال کرد.
تابع def در پایتون چیست؟
در پایتون کلمه کلیدی def
برای تعریف توابع استفاده میشود. تابع به بلاک کدی میگویند که قابلیت استفاده مجدد دارد و عملیات خاص یا مجموعهای از دستورالعملها را ارائه میدهد. def
کمک میکند که کد خود را به تکههای قابل مدیریتتر و کوچکتری از کد تقسیم کنیم. این کار سازماندهی، قابلیت استفاده و خاصیت ماژولاریته کدها را افزایش میدهد. مقدمه تابع def
با کلمه کلیدی def
شروع میشود، سپس به ترتیب نام تابع دلخواه، پرانتزها و علامت دو نقطه :
پشت سر هم قرار میگیرند.
کار با تابع def در پایتون
برای نوشتن توابع در پایتون، از کلمه کلیدی def
استفاده میکنیم. این کلمه کلیدی به پایتون خبر میدهد که در حال تعریف تابعی هستیم. در این بخش به بررسی جنبهها و متغیرهای گوناگون کلمه کلیدی def
پرداختهایم.
سینتکس تابع def در پایتون
حالت پایه سینتکس استفاده از این تابع به صورت زیر است.
1def function_name(parameters):
2 """Optional documentation string (docstring)"""
3 code to be executed
4 return [expression]
این سینتکس شامل موارد زیر میشود.
- کلمه کلیدی def
- نام تابع Function name
- دستورالعملهای درون تابع code to be executed
- پارامترهای مورد استفاده تابع Parameters
- عبارت مربوط به پایان تابع و برگرداندن داده به خارج از تابع (گزینه اختیاری) return [expression]
نکات استفاده از کلمه کلیدی def در کلاسها: در مورد کلاسهای پایتون کلمه کلیدی def
برای تعریف کردن متدهای کلاسی استفاده میشود. کلمه کلیدی def
نه تنها برای تعریف توابع عادی استفاده میشود بلکه توابع ویژه عضو کلاسها مانند __init__()
نیز با این کلمه کلیدی تعریف میشوند. این توابع مخصوص از قوانین خاصی نیز درون کلاسها پیروی میکنند، مانند اینکه به محض ایجاد شدن، اشیا شکل گرفته از کلاس را مقداردهی اولیه میکنند.
در ادامه چند مدل از پیادهسازی توابع مختلف را با استفاده از کلمه کلیدی def
میبینیم.
ایجاد تابع def بدون هیچ آرگومانی
در این مثال، با استفاده از کلمه کلیدی def
تابع تعریف شدهای توسط کاربر را نمایش دادهایم. تنها کاری که این تابع میکند چاپ کردن کلمه Hello
در خروجی است.
1def python_def_keyword():
2 print("Hello")
3python_def_keyword()
خروجی حاصل از اجرای تابع ساده بالا به صورت زیر در کنسول پایتون نمایش داده میشود.
Hello
چگونه با استفاده از فرادرس مهارت خود را در پایتون تقویت کنیم؟
ساخت تابع در پایتون یکی از تخصصهایی است که برای حرفهای شدن در کدنویسی به آن نیاز خواهیم داشت. فراگیری چنین مهارتهای پایهای برای طی کردن سایر مراحل کار به صورت تخصصی در پایتون جزو ضروریات شمرده میشود. یکی از بهترین راهها برای آموختن و نهادینه کردن چنین مهارتهایی با تمام جزییات، تماشای فیلمهای آموزشی است که توسط اساتید حرفهای و با کیفیت بالا طراحی و ضبط شدهاند. چرا که فیلمهای آموزشی نسبت به سایر دورههای آموزشی حتی دورههای حضوری مزیتهای بیشتری دارند.
از این رو سایت فرادرس فیلمهای بسیار خوبی با کیفیت عالی در روش آموزش و متناسب با همه سطوح دانش را برای همه مخاطبان -از تازه کار گرفته تا مخاطبان حرفهای- فراهم کرده است. این فیلمهای آموزشی با دقت و حساسیت بالایی در انتخاب استاد و روش تدریس و حتی کیفیت مطالب مورد تدریس تولید شدهاند. در صورتی که علاقهمند به افزایش مهارت خود در زبان برنامهنویسی پایتون هستید، فیلمهای آموزشی فرادرس که لینک آنها در زیر آمده، میتوانند گزینه خوبی برای ادامه مسیر تسلط بر پایتون باشند.
در صورت کلیک بر روی تصویر بالا به صفحه اصلی مجموعه آموزش پایتون در فرادرس منتقل میشوید و به فیلمهای بسیار بیشتری درباره آموزش پایتون دسترسی خواهید داشت.
مثال برای تابع def در پایتون
در این بخش، مثالهایی را خواهیم دید که با استفاده از تابع def در پایتون، توابع سفارشی متنوعی را برای اجرای کارهای مختلف پیادهسازی کردهایم.
ساخت تابع def برای محاسبه تفریق دو عدد
در این مثال، با استفاده از کلمه کلیدی def
تابع سفارشی برای منها کردن ایجاد کردیم. نام این تابع python_def_subNumbers()
است. این تابع میزان اختلاف بین دو عدد را محاسبه میکند.
1# Python3 code to demonstrate
2# def keyword
3
4# function for subtraction of 2 numbers.
5def python_def_subNumbers(x, y):
6 return (x-y)
7
8# main code
9a = 90
10b = 50
11
12# finding subtraction
13result = python_def_subNumbers(a, b)
14
15# print statement
16print("subtraction of ", a, " and ", b, " is = ", result)
خروجی حاصل از اجرای تابع بالا به صورت زیر به کاربر نمایش داده میشود.
subtraction of 90 and 50 is = 40
ساخت تابع def برای محاسبه ۱۰ تا عدد اول
در این مثال نیز تابع تعریف شدهای با استفاده از کلمه کلیدی def
نمایش دادهایم. این برنامه تابعی با نام python_def_prime()
را با استفاده از کلمه کلیدی def
تعریف کرده که پارامتر n
را دریافت میکند. سپس، تابع تعریف شده، تعداد n
عدد اول را از ابتدا محاسبه میکند و در خروجی به کاربر نمایش میدهد.
1# Python program to print first 10
2# prime numbers
3
4# A function name prime is defined
5# using def
6def python_def_prime(n):
7 x = 2
8 count = 0
9 while count < n:
10 for d in range(2, x, 1):
11 if x % d == 0:
12 x += 1
13 else:
14 print(x)
15 x += 1
16 count += 1
17
18# Driver Code
19n = 10
20
21# print statement
22print("First 10 prime numbers are: ")
23python_def_prime(n)
خروجی حاصل از اجرای تابع بالا به صورت زیر به کاربر نمایش داده میشود.
First 10 prime numbers are: 2 3 5 7 11 13 17 19 23 27
تعریف تابعی برای محاسبه مقدار فاکتوریل پارامتر مشخص شده
در این مثال نیز تابعی را نمایش میدهیم که با استفاده از کلمه کلیدی def
توسط برنامهنویس پایتون، تعریف شده است. در برنامه نمایش داده شده پایین، برنامه تابعی به نام python_def_factorial()
را با استفاده از تابع def در پایتون تعریف کرده است. این تابع پارامتر مجزایی به نام n
را دریافت میکند. سپس مقدار فاکتوریل این عدد را محاسبه و در خروجی نمایش میدهد.
1# Python program to find the
2# factorial of a number
3
4# Function name factorial is defined
5def python_def_factorial(n):
6 if n == 1:
7 return n
8 else:
9 return n*python_def_factorial(n-1)
10
11# Main code
12num = 6
13
14# check is the number is negative
15if num < 0:
16 print("Sorry, factorial does not exist for negative numbers")
17elif num == 0:
18 print("The factorial of 0 is 1")
19else:
20 print("The factorial of", num, "is", python_def_factorial(num))
خروجی حاصل از اجرای تابع بالا به صورت The factorial of 6 is 720
به کاربر نمایش داده میشود.
از این به بعد به بررسی انواع آرگومانهای قابل دریافت توسط تابع def خواهیم پرداخت. اگر تا به اینجای مطلب نسبت به توابع و روش تعریفشان در پایتون با استفاده از کلمه کلیدی def علاقهمند شدهاید و حس میکنید نیاز به دیدن مثالهای بیشتری در این باره دارید پیشنهاد میکنیم که فیلم آموزش تابع در زبان برنامه نویسی پایتون همراه با مثال های بیشتر که به صورت رایگان توسط فرادرس تولید شده را نیز بررسی کنید.
آرگومان های قابل پذیرش توسط تابع def در پایتون
در این بخش به بررسی انواع آرگومانهایی میپردازیم که در زمان تعریف تابع میتوان به کلمه کلیدی def ارسال کرد. به طور عمده این آرگومانها را میتوان به شکل زیر فهرست کرد.
- متغیرهای ساده و معمولی
- کلمه کلیدی *args
- کلمه کلیدی **kwargs
- سایر توابع
- متغیرهای خاص درون کلاسها
گزینه اول که همان متغیرهای ساده پایتونی هستند را در ابتدای مطلب با بچند مثال ساده بررسی کردیم. در ادامه بررسی موارد فهرست بالا را از گزینه دوم یعنی کلمه کلیدی *args
ادامه میدهیم.
استفاده از تابع def در پایتون با args*
کد آمده در پایین، برنامه پایتونی را نشان میدهد که با استفاده از کلمه کلیدی def
تابعی به نام python_def_keyword()
تعریف کرده است. این تابع از پارامتر خاص *args
استفاده میکند. این کلمه کلیدی به تابع کمک میکند بدون محدودیت آرگومان بپذیرد. درون چنین توابعی معمولا حلقهای از نوع for
برای پیمایش بر روی آرگومانهای ارسال شده وجود دارد. در مثال پایین حلقه for
بر روی متغیر *args
پیمایش میکند. این متغیر شامل همه آرگومانهای ارسال شده به تابع میشود. سپس با استفاده از تابع print()
تمام آرگومانها را به ترتیب در کنسول پایتون چاپ میکند.
1def python_def_keyword(*args):
2 for arg in args:
3 print(arg)
4python_def_keyword(1, 2, 3)
5python_def_keyword('apple', 'banana', 'cherry', 'date')
6python_def_keyword(True, False, True, False, True)
خروجی برنامه بالا به صورت زیر در کنسول پایتون نمایش داده میشود.
1 2 3 apple banana cherry date True False True False True
استفاده از تابع def در پایتون با kwargs**
کدی که در پایین میبینید برنامه پایتونی است که با استفاده از کلمه کلیدی def
تابعی به نام python_def_keyword()
تعریف کرده است. در این مثال از پارامتر خاص **kwargs
استفاده کردهایم. این پارامتر تابع را قادر میسازد تا به اندازه دلخواه آرگومانهایی از جنس کلمات کلیدی بپذیرد.
داخل چنین توابعی معمولا حلقهای از نوع for
وجود دارد که بر بروی جفتهای ارسال شده کلید-مقداری به تابع پیمایش کند. درون این تابع، حلقه for
با استفاده از متد items()
بر روی دیکشنری kwargs
پیمایش میکند. در نتیجه این پیمایش توالی از تاپل های پایتون به صورت کلید-مقدار (key, value)
توسط حلقه for
از درون **kwargs
استخراج میشوند. سپس برای هر تاپلی ایجاد شده حلقه متغیرهای کلید key
و مقدار value
را از هم جدا میکند و با استفاده از تابع print()
و تبدیل دادهها به شکل string
این مقادیر را در کنسول پایتون به کاربر نمایش میدهد.
1def python_def_keyword(**kwargs):
2 for key, value in kwargs.items():
3 print(f"{key}: {value}")
4python_def_keyword(name='Alice',
5 age=25, city='New York')
6python_def_keyword(country='Canada',
7 language='French', population=38000000)
8python_def_keyword(color='blue',
9 shape='square', size='large', material='wood')
خروجی حاصل از اجرای برنامه بالا در کنسول پایتون به صورت زیر نمایش داده میشود.
name: Alice age: 25 city: New York country: Canada language: French population: 38000000 color: blue shape: square size: large material: wood
برای اینکه نسبت به کلمه کلیدی kwargs** و سایر تکنیکها و ترفندهای اطلاعات بیشتری کسب کنید، پیشنهاد میکنیم که مطلب ترفندهای برنامه نویسی در پایتون، از صفر تا صد را از مجله فرادرس مطالعه بفرمایید.
ارسال تابع به عنوان آرگومان به ورودی تابعی دیگر
کد نمایش داده شده در پایین، برنامه پایتونی است که تابعی به نام apply_function()
تعریف میکند. این تابع دو پارامتر دریافت میکند.
- func
: که نمایانگر یک تابع است.
- arg
: آرگومانی را نشان میدهد که باید به تابع func
ارسال شود.
سپس تابعی که تعریف کرده شده نتیجه فراخوانی تابع func
را همراه با پارامتر arg
برمیگرداند. در این مثال، برنامه نوشته شده با استفاده از کلمه کلیدی def
تابع دیگری با نام square
نیز تعریف کرده است. این تابع فقط پارامتر x
را دریافت میکند و مربع مقدار این پارامتر را برمیگرداند.
بعد از تعریف توابع بالا، برنامه تابع apply_function()
را فراخوانی میکند. در این فراخوانی تابع square
به همراه عدد 5
به عنوان آرگومان به تابع apply_function()
ارسال میشوند و نتیجه این محاسبات از طریق تابع apply_function()
به بیرون -محیط قابل دسترسی برای برنامهنویس- برگردانده میشود.
1def apply_function(func, arg):
2 return func(arg)
3def square(x):
4 return x ** 2
5result = apply_function(square, 5)
6print(result)
خروجی حاصل از اجرای برنامه بالا برابر با عدد 25
است.
مثالی از تابع def در پایتون همراه با مفهوم کلاس ها
در برنامه پیادهسازی شده پایین، کلاسی به نام python_def_keyword
شامل متد __init__()
تعریف شده است.
در این کلاس متد __init__()
دو آرگومان به نامهای name
و age
میپذیرد و دو متغیر self.name
و self.age
را به عنوان نمونه، مقداردهی اولیه میکند. درون این کلاس متدی به نام say_hello()
تعریف کردهایم که پیغام خوشامدگویی را همراه با نام و سن شخص مخاطب در خروجی چاپ میکند. سپس نمونهای از کلاس python_def_keyword
به نام python_def_keyword1
ایجاد کردیم. به این نمونه به عنوان نام John
و به عنوان سن عدد 30
را ارسال میکنیم. در نهایت هم متد say_hello()
مربوط به نمونه python_def_keyword1
را برای اجرا فراخوانی کردیم.
1class python_def_keyword:
2 def __init__(self, name, age):
3 self.name = name
4 self.age = age
5
6 def say_hello(self):
7 print(f"Hello, my name is {self.name} " +
8 f"and I am {self.age} years old.")
9python_def_keyword1 = python_def_keyword("John", 30)
10python_def_keyword1.say_hello()
خروجی حاصل از اجرای کد بالا به صورت زیر در کنسول پایتون نمایش داده میشود.
Hello, my name is John and I am 30 years old.
متغیرهای Global
متغیرهای Global، به متغیرهایی میگویند که خارج از محدوده تابع def در پایتون تعریف شده باشند. البته که این نوع از متغیرها میتوانند به سادگی باعث بروز خطا و باگ در برنامهها شوند. برای همین استفاده از این متغیرها به غیر از موارد استثنا توصیه نمیشود. در این بخش آشنایی سریعی با متغیرهای Global در پایتون خواهیم داشت.
متغیر Global، متغیری است که با استفاده از عملگر =
و خارج از بلاک مربوط به تابع def
ساخته شده است. این نوع از متغیرها در حقیقت، ثابتهای سراسری در برنامه هستند. یعنی در همه جای برنامه قابل دسترسیاند.
مثالی از متغیرهای Global در پایتون
در کد پایین ثابت سراسری به نام STATES
تعریف کردهایم. هر تابعی درون این فایل میتواند متغیر STATES
را بدون تغییر در سینتکس بخواند. نظم مربوط به تعریف ثابت و تابع درون این فایل اهمیتی ندارد. این نوع از استفاده از ثابتهای برنامهنویسی روش مناسبی است و باعث ایجاد هیچ باگی در کدها نمیشود.
1STATES = ['ca', 'tx', 'nj', 'me']
2
3def foo():
4 for state_code in STATES:
5 ....
اما فرض کنیم بهجای این ثابت سراسری میخواهیم متغیر سراسری یا Global به نام count
تعریف کنیم. به همچنین، زمانی که تابع increment()
اجرا میشود مقدار درون متغیر count
را افزایش بدهد. در کدهای پیادهسازی شده پایین قطعه کد global count
را میبینید. مشاهده میکنید، برای تغییر شکل متغیر count
به نوع Global در داخل تابع از کلمه کلیدی global استفاده کردهایم. در این تابع نباید از متغیر count
مانند متغیری محلی استفاده کرد. بلکه این متغیر از نوع Global است.
1count = 0 # create global variable "count"
2
3
4def increment():
5 global count # declare that we want the global
6 count += 1 # access the global variable
7
8
9def print_count():
10 print('current:', count)
اگر تابعی فقط بخواهد که مقدار درون متغیر global
را بدون تغییر دادن آن بخواند، نیازی به تعریف global
وجود ندارد. پایتون همیشه در ابتدا به دنبال متغیری محلی به آن نام میگردد و اگر متغیر محلی به آن نام پیدا نکرد یک قدم به بالاتر برداشته و بهدنبال متغیرهای global
با آن نام میگردد. این در واقع همان روشی است که تابع print_count()
در کد بالا استفاده میکند. فقط با استفاده از نام متغیر count
در داخل تابع def
، به صورت خودکار به دنبال متغیر global
می گردد. اگر تابعی نیاز به اعمال تغییر در متغیر global
داشته باشد، استفاده از واژه global
برای تعریف این نوع از متغیرها ضروری میشود.
در حقیقت این ایده که کار کردن با متغیر global
بدون هیچ سینتکس اضافی انجام شود مانند همان روش کار با متغیر سراسری است. به مثال STATES
در کد بالا توجه کنید. متغیر STATES
نیز از نوع متغیرهای global
است و بنابراین تابع میتواند آن را بخواند.
مثالی از کدنویسی در شل پایتون
کدهایی که در ادامه آمدهاند را در فضای شل پایتون نوشتهایم. این کدها مثال سادهای از روش کار با متغیرهای global
را نمایش میدهد.
>>> count = 6 >>> >>> def increment(): ... global count ... count += 1 ... >>> >>> count 6 >>> increment() >>> count 7 >>> >>> special = 17 >>> def foo(): ... print('the special:', special) ... >>> foo() the special: 17 >>>
مشکلات متغیرهای Global
از آنجا که متغیرهای Global ساختار black box توابع را میشکنند، باعث پیچیدهتر شدن طراحی و خطایابی کدها برای برنامهنویسان میشوند. بهجای اینکه رفتار توابع صرفا توسط پارامترهای آن تعیین شود، از وضعیت فعلی تمام متغیرهای Global مورد استفاده تابع نیز تاثیر میپذیرد. این پیچیدهگی درک و خطایابی کدها را مشکلتر میکند.
رویکرد بهتر، محدود کردن استفاده از متغیرهای Global در توابعی است که به عنوان برنامهنویس تعریف میکنیم. در درجه اول با تکیه بر پارامترها، توابع، مستقلتر میشوند. همانطور دیدیم این رویکرد آزمودن کدها را سادهتر میکند و باعث افزایش شفافیت کدها نیز میشود.
توابع بازگشتی در پایتون
یکی دیگر از تواناییهای تابع def در پایتون، استفاده برای تعریف توابع بازگشتی است. در مثال آمده پایین نمونهای از پیادهسازی این شکل از توابع را نمایش دادهایم.
1def factorial(n):
2 if n == 0:
3 return 1
4 else:
5 return n * factorial(n - 1)
6
7result = factorial(5)
8print(result)
در مثال بالا، با استفاده از تابع def در پایتون تابع بازگشتی به نام factorial
تعریف کردهایم. این تابع وظیفه محاسبه مقدار فاکتوریل عدد دریافت شده را دارد. تابع خودش را تا زمان رسیدن به حالت پایه -وقتی که مقدار n
برابر با 0
شود- فراخوانی میکند. سپس نتیجه تولید شده از تمام مقادیر قبلی را برمیگرداند. در این مثال تابع را با مقدار پارامتر 5
فراخوانی میکنیم و تابع نتیجه 120
را در خروجی نمایش میدهد. برای اینکه تابعی به صورت بازگشتی خود را فراخوانی کند نیازی به استفاده دوباره از کلمه def
در تعریف تابع وجود ندارد.
مسیر یادگیری پروژه محور پایتون با فرادرس
بعد از اینکه مهارتهای خود را در زبان برنامهنویسی پایتون در حد مناسبی ارتقا دادیم، بهترین کار قبل از ورود به صنعت برنامهنویسی، شناخت علایق و پیدا کردن رشته تخصصی متناسب با خود در پایتون است. برای اینکه متوجه شویم چه بخشهایی از دانش برنامهنویسیمان نیاز به مطالعه و تمرین بیشتر دارد و به چه شاخههای تخصصی در پایتون بیشتر علاقهمند هستیم، بهتر است بعد از مطالعه و شناخت انواع شاخههای موجود درباره هر کدام فیلم آموزشی مربوط به آن را نیز ببینیم.
عبارت pass همراه با تابع def در پایتون
عبارت pass
به عنوان یک نگهدارنده فضای کد در تابع def
عمل میکند. در واقع این عبارت باعث میشود که تابع تعریف شده به صورت خنثی -بدون ایجاد خطا و انجام کار خاصی- وجود داشته باشد تا زمانی که کدهای مورد نظر برای آن تابع را در آینده بنویسیم. وجود عبارت pass
از بروز خطا بخواطر وجود بلاکهای خالی کد در برنامه جلوگیری میکند.
این عبارت معمولا وقتی استفاده میشود که کدهایی برای نوشته شدن برنامهریزی شدهاند اما فعلا نوشته نشدهاند.
1def future_function():
2 pass
3
4# this will execute without any action or error
5future_function()
جمع بندی
با مطالعه این مطلب متوجه شدیم که تابع def در پایتون ویژگی بنیادین و قدرتمندی است که به برنامهنویسان برای تعریف توابع سفارشی مد نظرشان کمک میکند. تابع def
، این عملیات را با کپسولهسازی کدها در تابعی که نامگذاری شده انجام میدهد. با کمک این تابع، توسعهدهندگان نرمافزار بهسادگی به ارتقای قابلیت استفاده مجدد، ماژولار بودن و سازماندهی کدها میپردازند. این کارها باعث تولید برنامههای انعطافپذیرتر با کارایی بیشتر میشود.
در این مطلب از مجله فرادرس، جنبههای مختلف استفاده از تابع def در پایتون را بررسی کردیم. از مطالب پایه درباره تعریف تابع، سینتکس تابع و پارامترهای ارسال شده به تابع شروع کردیم و تا مفاهیم پیشرفتهتری مانند مقادیر برگشتی، متغیرهای Global و توابع بازگشتی را توضیح دادیم. دیدیم که توابع چگونه برای کدها قابلیت استفاده مجدد ایجاد میکنند، چگونه باعث افزایش خوانایی کدها میشوند و چگونه ساختار کلی برنامهها را تقویت میکنند.
source