संभव डुप्लिकेट लैम्ब्डा बनाना:
What do (lambda) function closures capture in Python?
lambda function don't closure the parameter in Python?एक पाश अंदर
मैं एक पाश अंदर lambdas बनाने के लिए कोशिश कर रहा हूँ कि वस्तुओं की एक सूची से अधिक दोहराता:
lambdas_list = []
for obj in obj_list:
lambdas_list.append(lambda : obj.some_var)
अब, अगर मैं लैम्बडास पर फिर से चलाता हूं सूची और उन्हें इस तरह कॉल करें:
for f in lambdas_list:
print f()
मुझे वही मान मिलता है। obj_list
में यह अंतिम obj
का मान है क्योंकि यह सूची इटरेटर के ब्लॉक में अंतिम चर था। कोड बनाने के लिए कोड के एक अच्छे (पायथनिक) को फिर से लिखने के लिए कोई विचार? बजाय इस लाइन
देखें http://stackoverflow.com/questions/2295290/what-do-lambda-function-closures-capture-in-python/2295372#2295372, और http://stackoverflow.com/questions/7514093/lambda समारोह-न-बंद-पैरामीटर में अजगर। –
सबसे वर्णनात्मक उत्तर: http://stackoverflow.com/questions/938429/scope-of-python-lambda-functions-and-their-parameters/938493#938493 –