পাইথনে ফাংশনের ভিতরে ফাংশন

পাইথনে এক ফাংশনের ভিতরে অন্য ফাংশন ঘোষণা করা যায়। ধরা যাক আমাদের একটি বাইরের ফাংশন outer আছে, যার ভিতরে inner ফাংশনটি রয়েছে:

pythondef outer():
  def inner():
    pass

উপরের উদাহরণটি যথেষ্ট সরল দেখাচ্ছে। তবে প্রায়শই এমন পরিস্থিতি arises যখন outer ফাংশনের বডিতে inner ছাড়াও অন্যান্য অপারেশন performed হয়। কোড সরল করার জন্য inner-কে বাইরের ব্লকে নিয়ে যাওয়া যেতে পারে, তবে এই ফাংশনটি শুধুমাত্র একবার ব্যবহার করা হবে এবং শুধুমাত্র outer ফাংশনের ভিতরে। সুতরাং এটিকে এর সীমার বাইরে নিয়ে যাওয়ার কোনো মানে হয় না।

আসুন একটি উদাহরণ দেখি, যেখানে একটি তালিকা outer ফাংশনে পাস করা হয়। এবং inner ফাংশনের সাহায্যে তালিকার numerical এলিমেন্টটি বর্গ করা হবে। এর জন্য inner ফাংশনের পরে আমরা একটি খালি তালিকা res ঘোষণা করি, যেখানে বর্গ করা এলিমেন্টগুলি লুপে জমা হবে:

pythondef outer(lst):
  def inner(num):
    return num ** 2

  res = []

  for el in lst:
    res.append(inner(el))

  return res

আসুন outer ফাংশনটি কল করি, এটি একটি তালিকা প্যারামিটার পাস করি এবং ফলাফল কনসোলে প্রিন্ট করি:

pythonprint(outer([2, 3, 5])) # আউটপুট দেবে [4, 9, 25]
Задание 1

একটি বাহ্যিক এবং একটি অভ্যন্তরীণ ফাংশন লিখুন, যাদের যৌথ কাজ হবে তালিকার প্রতিটি স্ট্রিং এলিমেন্ট বড় হাতের অক্ষরে প্রিন্ট করা।

Задание 2

নিম্নলিখিত ফাংশনগুলি দেওয়া আছে:

pythondef 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-এর জন্য একটি অভ্যন্তরীণ ফাংশন হয়।