কম্পিউটার টিউটোরিয়াল

পাইথন লুপের ভেতরে ল্যাম্বডা (lambda) তৈরি করা

পাইথন লুপের ভেতরে ল্যাম্বডা ফাংশন তৈরি করলে লেট বাইন্ডিং (late binding) সমস্যা হয়। সব ল্যাম্বডা একই ভেরিয়েবল রেফার করে, ফলে সবই শেষ ভ্যালু দেখায়।

সমস্যা

# ভুল পদ্ধতি
lambdas = [lambda: i*i for i in range(1, 6)]
for f in lambdas:
    print(f())  # সবই 25 প্রিন্ট করবে!

সমাধান ১: ডিফল্ট আর্গুমেন্ট ব্যবহার (কারিং/currying)

lambdas = [lambda i=i: i*i for i in range(1, 6)]
for f in lambdas:
    print(f())

আউটপুট

1
4
9
16
25

সমাধান ২: হেল্পার ফাংশন ব্যবহার

def square(x):
    return lambda: x*x

lambdas = [square(i) for i in [1, 2, 3, 4, 5]]
for f in lambdas:
    print(f())

ব্যাখ্যা

ডিফল্ট আর্গুমেন্ট i=i দিয়ে বর্তমান i-এর ভ্যালু ল্যাম্বডার ডিফল্টে বাঁধা হয় (early binding)। হেল্পার ফাংশন নতুন স্কোপ তৈরি করে একই ফলাফল দেয়।

  1. পাইথন পান্ডাস - RangeIndex তৈরি করার পদ্ধতি

  2. পাইথনে DataFrame তৈরি করার পদ্ধতি

  3. পাইথনে ভার্চুয়াল এনভায়রনমেন্ট তৈরি করার পদ্ধতি

  4. পাইথন for লুপে Tkinter বাটন তৈরি করা