Code Explanation:
1) Function Definition
def f(a, L=[]):
Defines a function f with:
A required argument a.
An optional argument L with a default value of an empty list [].
Important: Default values are evaluated only once at function definition time, not each time the function is called.
So the same list object is reused across calls unless a new list is explicitly passed.
2) Function Body
L.append(a)
return L
The function appends the argument a into the list L.
Then returns that (possibly shared) list.
3) First Call
print(f(1))
No second argument → uses the default list [].
L = [], then 1 is appended → L = [1].
Returns [1].
Output so far:
[1]
4) Second Call
print(f(2, []))
Here we explicitly pass a new empty list [].
So L is not the shared default; it’s a fresh list.
2 is appended → L = [2].
Returns [2].
Output :
[1]
[2]
5) Third Call
print(f(3))
No second argument again → uses the same default list created in the first call (already contains [1]).
3 is appended → L = [1, 3].
Returns [1, 3].
Final Output:
[1]
[2]
[1, 3]
Download Book - 500 Days Python Coding Challenges with Explanation


0 Comments:
Post a Comment