পাইথনে ফাংশনের ভিতরে ফাংশন
পাইথনে এক ফাংশনের ভিতরে অন্য ফাংশন
ঘোষণা করা যায়। ধরা যাক আমাদের একটি বাইরের ফাংশন
outer আছে, যার ভিতরে
inner ফাংশনটি রয়েছে:
def outer():
def inner():
pass
উপরের উদাহরণটি যথেষ্ট সরল দেখাচ্ছে।
তবে প্রায়শই এমন পরিস্থিতি arises যখন
outer ফাংশনের বডিতে
inner ছাড়াও অন্যান্য
অপারেশন performed হয়। কোড সরল করার জন্য
inner-কে বাইরের ব্লকে
নিয়ে যাওয়া যেতে পারে, তবে এই ফাংশনটি শুধুমাত্র একবার
ব্যবহার করা হবে এবং শুধুমাত্র outer ফাংশনের ভিতরে।
সুতরাং এটিকে এর সীমার বাইরে নিয়ে যাওয়ার কোনো মানে হয় না।
আসুন একটি উদাহরণ দেখি, যেখানে একটি তালিকা
outer ফাংশনে পাস করা হয়।
এবং inner ফাংশনের সাহায্যে
তালিকার numerical এলিমেন্টটি বর্গ করা হবে।
এর জন্য inner ফাংশনের পরে
আমরা একটি খালি তালিকা res ঘোষণা করি,
যেখানে বর্গ করা এলিমেন্টগুলি
লুপে জমা হবে:
def outer(lst):
def inner(num):
return num ** 2
res = []
for el in lst:
res.append(inner(el))
return res
আসুন outer ফাংশনটি কল করি,
এটি একটি তালিকা প্যারামিটার পাস করি এবং
ফলাফল কনসোলে প্রিন্ট করি:
print(outer([2, 3, 5])) # আউটপুট দেবে [4, 9, 25]
একটি বাহ্যিক এবং একটি অভ্যন্তরীণ ফাংশন লিখুন, যাদের যৌথ কাজ হবে তালিকার প্রতিটি স্ট্রিং এলিমেন্ট বড় হাতের অক্ষরে প্রিন্ট করা।
নিম্নলিখিত ফাংশনগুলি দেওয়া আছে:
def func1(num):
if num > 0:
num += 2
return num
def func2(iter):
res = []
for el in iter:
res.append(func1(el))
return res
কোডটি পুনরায় লিখুন যাতে func1
func2-এর জন্য একটি অভ্যন্তরীণ ফাংশন হয়।