मैं निर्दिष्ट तर्क, functools.partial की तरह कुछ के साथ एक समारोह रैप करने के लिए चाहते हैं के साथ समारोह लपेटो करने में विफल रहा है, लेकिन यह अपेक्षा के अनुरूप काम नहीं करता है:लैम्ब्डा
source_codes = (0, 1, 2)
def callback(source, *args):
print 'callback from source: ', source
funcs = []
for source in source_codes:
funcs.append(lambda *args: callback(source, *args))
for i, func in enumerate(funcs):
print 'source expected: ', i
func()
print
उत्पादन:
source expected: 0
callback from source: 2
source expected: 1
callback from source: 2
source expected: 2
callback from source: 2
लेकिन ... क्या मैं चाहता हूँ है:
source expected: 0
callback from source: 0
source expected: 1
callback from source: 1
source expected: 2
callback from source: 2
मैं यह काम करता है अगर मैं functools.partial
का उपयोग पता है, लेकिन मुझे पता है कि वें चाहते ई मेरे कोड में असली समस्या ... क्या लैम्ब्डा रैपर वैश्विक चर source
का उपयोग करता है?