تعریف تابع در تابعی دیگر در پایتون :
تابع در تابعی یکی از ویژگیهای قدرتمند پایتون است که به برنامهنویسان امکان میدهد تا توابع را به عنوان آرگومانها به توابع دیگر ارسال کرده و از آنها استفاده کنند. این ویژگی میتواند به ما در حل مسائل پیچیده کمک کند و کد را خواناتر و قابلتغییر بیشتری کند.
برای تعریف یک تابع در تابع، میتوانیم از کلیدواژه `def` استفاده کنیم. ساختار کلی تعریف تابع در تابع به صورت زیر است:
“`
def function1():
# کد تابع ۱
def function2():
# کد تابع ۲
function1()
“`
در این مثال، تابع `function1` تعریف شده است و کد آن در داخل بلوک تابع قرار دارد. سپس، تابع `function2` تعریف شده است و در داخل بلوک تابع، تابع `function1` فراخوانی شده است. با این کار، وقتی تابع `function2` فراخوانی میشود، تابع `function1` هم فراخوانی میشود و کد آن اجرا میشود.
با استفاده از تابع در تابع، میتوانیم به طور مثال توابع محاسباتی را در داخل یک تابع بزرگتر قرار داده و از آنها به عنوان بخشهایی از کد اصلی استفاده کنیم. همچنین، این ویژگی به ما امکان میدهد که توابع را به عنوان آرگومانها به توابع دیگر ارسال کرده و از آنها در داخل تابع دیگر استفاده کنیم. این ویژگی به ما امکان میدهد تا بخشهای مختلف کد را به صورت منطقی تر و بهتر سازماندهی کنیم.
به عنوان مثال، فرض کنید که میخواهیم تابعی داشته باشیم که یک عدد را به توان دو میبرد و سپس نتیجه را به تابع دیگری بدهد تا مجموع اعداد از یک تا این توان محاسبه شود. در این حالت، میتوانیم از تابع در تابع استفاده کنیم تا این کار را انجام دهیم. کد زیر نمونهای از چگونگی استفاده از تابع در تابع برای حل این مسئله است:
“`
def power_of_two(n):
return n ** 2
def sum_of_numbers(n, power_function):
result = 0
for i in range(1, power_function(n)+1):
result += i
return result
number = 5
result = sum_of_numbers(number, power_of_two)
print(result)
“`
در این مثال، تابع `power_of_two` تعریف شده است که یک عدد را به توان دو میبرد. سپس، تابع `sum_of_numbers` تعریف شده است که یک عدد و یک تابع را به عنوان آرگومانها میگیرد. این تابع از تابع داده شده برای محاسبه توان استفاده میکند و سپس مجموع اعداد از یک تا این توان را محاسبه میکند و برمیگرداند. در نهایت، تابع `sum_of_numbers` با ارسال عدد مورد نظر و تابع `power_of_two` به تابع فراخوانی میشود و نتیجه در متغیر `result` ذخیره میشود. سپس نتیجه چاپ میشود.
با استفاده از تابع در تابع، میتوانیم کدهای پیچیدهتر و قابلتغییرتری بنویسیم و به راحتی توابع را با یکدیگر ترکیب کنیم. با استفاده از این ویژگی، کد شما به صورت ماژولار تر و قابلتوسعهتر خواهد بود.