Code Explanation:
1. Define the Outer Function: make_counter
def make_counter():
Declares a function named make_counter.
It will be used to create a customized counter function.
2. Initialize a Variable
count = 0
Inside make_counter, a variable count is initialized to 0.
This will serve as the counter's starting value.
It is local to make_counter, but intended to be accessed inside the nested function.
3. Define the Inner Function (Closure): counter
def counter():
return count + 1
This is a nested function named counter.
It returns count + 1, but does not modify count.
It uses count from the enclosing scope (closure), but since there's no assignment to count, the value remains unchanged.
4. Return the Inner Function
return counter
Returns the counter function itself (not the result of calling it).
The returned function carries with it the reference to the count variable from its creation environment — a closure.
5. Create a Counter Function
c = make_counter()
Calls make_counter, which returns the counter function.
Now c is a reference to the counter function, with count set to 0 in its closure.
6. Call the Counter Function Twice
print(c(), c())
c() runs the inner counter function:
It does not increment count; it just returns count + 1.
Since count is always 0, it returns 1 every time.
Output is:
1 1
.png)

0 Comments:
Post a Comment