দয়া করে মনে রাখবেন যে ল্যাম্বডা একটি পৃথক লাইনে দেওয়া হলে কেবল গৃহীত উত্তরগুলি কাজ করে। যদি আপনি এটি কোনও ফাংশনের আর্গুমেন্ট হিসাবে পাস করেন এবং ল্যাম্বডা কোডটি অবজেক্ট হিসাবে পুনরুদ্ধার করতে চান তবে সমস্যাটি কিছুটা জটিল হয়ে যায় কারণ inspect
আপনাকে পুরো লাইনটি দেবে।
উদাহরণস্বরূপ, একটি ফাইল বিবেচনা করুন test.py
:
import inspect
def main():
x, f = 3, lambda a: a + 1
print(inspect.getsource(f))
if __name__ == "__main__":
main()
এটি কার্যকর করা আপনাকে দেয় (মনোযোগ দিন!):
x, f = 3, lambda a: a + 1
ল্যাম্বদার উত্স কোডটি পুনরুদ্ধার করার জন্য, আপনার সেরা বেটটি, আমার মতে, পুরো উত্স ফাইলটি পুনরায় পার্স করা হয়েছে (ব্যবহার করে f.__code__.co_filename
) এবং ল্যাম্বডা এএসটি নোডটি লাইন নম্বর এবং এর প্রসঙ্গে মেলানো হবে।
আমাদের সুনির্দিষ্টভাবে করতে হয়েছিল যে আমাদের ডিজাইন-বাই-কন্ট্রাক্ট লাইব্রেরি আইকনট্র্যাক্টে যেহেতু ল্যাম্বডা ফাংশনগুলি পার্স করতে হয়েছিল সেগুলি সজ্জকারদের পক্ষে যুক্তি হিসাবে। এটি এখানে আটকানো খুব কোড, তাই একবার দেখুন এই ফাংশন বাস্তবায়নের উপর ।