KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
"Learning Python, 4th Ed." mentions that: the enclosing scope variable is looked up when the nested functions are later called.. However, I thought that when a function exits, all of its local references disappear. def makeActions(): acts = [] for i in range(5): # Tries to remember each i acts.append(lambda x: i ** x) # All remember same last i! return acts makeActions()[n] is the same for every n because the variable i is somehow looked up at call time. How does Python look up this variable? Shouldn't it not exist at all because makeActions has already exited? Why doesn't Python do what the code intuitively suggests, and define each function by replacing i with its current value within the for loop as the loop is running?
Tags (comma-separated)
Save Edits
Cancel