এখানে মাল্টি লাইন ল্যাম্বডাসের আরও আকর্ষণীয় বাস্তবায়ন। কোডটি কাঠামোর উপায় হিসাবে পাইথন কীভাবে ইনডেন্টগুলি ব্যবহার করে সে কারণে এটি অর্জন সম্ভব নয়।
তবে ভাগ্যক্রমে আমাদের জন্য, অ্যারে এবং প্রথম বন্ধনী ব্যবহার করে ইনডেন্ট ফর্ম্যাটিং অক্ষম করা যেতে পারে।
কিছু ইতিমধ্যে চিহ্নিত হিসাবে, আপনি আপনার কোড লিখতে পারেন:
lambda args: (expr1, expr2,... exprN)
তত্ত্ব অনুসারে যদি আপনার বাম থেকে ডানদিকে মূল্যায়নের গ্যারান্টি থাকে তবে এটি কাজ করবে তবে আপনি এখনও একটি এক্সপ্রেশন থেকে অন্যের কাছে মূল্যবোধ হারাবেন।
যা কিছুটা আরও ভার্বোস তা অর্জনের একটি উপায় হ'ল
lambda args: [lambda1, lambda2, ..., lambdaN]
যেখানে প্রতিটি ল্যাম্বদা পূর্ববর্তীটি থেকে আর্গুমেন্ট গ্রহণ করে।
def let(*funcs):
def wrap(args):
result = args
for func in funcs:
if not isinstance(result, tuple):
result = (result,)
result = func(*result)
return result
return wrap
এই পদ্ধতিটি আপনাকে এমন কিছু লিখতে দেয় যা কিছুটা লিস্প / স্কিমের মতো।
সুতরাং আপনি এই জাতীয় জিনিস লিখতে পারেন:
let(lambda x, y: x+y)((1, 2))
হাইপোপেনজ গণনা করার জন্য আরও জটিল পদ্ধতি ব্যবহার করা যেতে পারে
lst = [(1,2), (2,3)]
result = map(let(
lambda x, y: (x**2, y**2),
lambda x, y: (x + y) ** (1/2)
), lst)
এটি স্কেলার সংখ্যার একটি তালিকা ফিরিয়ে দেবে যাতে এটি একাধিক মানকে হ্রাস করতে ব্যবহৃত হতে পারে।
অনেকগুলি ল্যাম্বডা থাকা অবশ্যই খুব কার্যকর হবে না তবে আপনি যদি সীমাবদ্ধ থাকেন তবে তাড়াতাড়ি কোনও কাজ করার পক্ষে এটি একটি ভাল উপায় হতে পারে তবে এটি পরে একটি আসল ফাংশন হিসাবে পুনরায় লিখুন।