निम्न परीक्षण में विफल रहता है:नक्शा() और सूची समझ का परिणाम अलग क्यों हैं?
#!/usr/bin/env python
def f(*args):
"""
>>> t = 1, -1
>>> f(*map(lambda i: lambda: i, t))
[1, -1]
>>> f(*(lambda: i for i in t)) # -> [-1, -1]
[1, -1]
>>> f(*[lambda: i for i in t]) # -> [-1, -1]
[1, -1]
"""
alist = [a() for a in args]
print(alist)
if __name__ == '__main__':
import doctest; doctest.testmod()
दूसरे शब्दों में:
>>> t = 1, -1
>>> args = []
>>> for i in t:
... args.append(lambda: i)
...
>>> map(lambda a: a(), args)
[-1, -1]
>>> args = []
>>> for i in t:
... args.append((lambda i: lambda: i)(i))
...
>>> map(lambda a: a(), args)
[1, -1]
>>> args = []
>>> for i in t:
... args.append(lambda i=i: i)
...
>>> map(lambda a: a(), args)
[1, -1]
मेरे जैसे लोगों ने प्रश्न पढ़ा लेकिन पहले किसी भी समस्या का ध्यान न दें: ध्यान दें ' 1, -1] '! अनिवार्य रूप से 'lambda i: ...' एक लूप में i के वर्तमान मूल्य को कैप्चर नहीं करता है। पाइथन से संबंधित –
अक्सर पूछे जाने वाले प्रश्न: [विभिन्न मूल्यों के साथ लूप में परिभाषित लैम्बडास एक ही परिणाम लौटाते हैं?] (Https://docs.python.org/3/faq/programming.html#why-do-lambdas-defined -इन-ए-लूप-साथ-अलग-मूल्य-सभी-वापसी-एक-परिणाम) – jfs