What will be printed by the following Python code snippet?
def func(val, lst=[]):
lst.append(val)
return lst
print(func(1))
print(func(2))
Answer and explanation
Correct answer: A. [1] then [1, 2]
- Step 1: In Python, default parameter arguments are evaluated once when the function definition is executed, not at each call.
- Step 2: The mutable default list `lst` persists across invocations. The first call appends 1 (`[1]`), and the second call appends 2 to the same list instance (`[1, 2]`).
Answer
[1] then [1, 2].
Why not the others: `[1]` then `[2]` assumes a new list is created on each call; `[1, 2]` then `[1, 2]` misidentifies the first return value.
Practise more Algorithms and Python Programming.
Free questions with an explanation for every one, and full timed EmSAT Achieve (UAE) mock tests.
More Algorithms and Python Programming questions
- What is the output of the following Python expression: [x**2 for x in range(6) if x % 2 != 0]?
- What is the worst-case time complexity of searching for an element in a balanced binary search tree (AVL tree) containing n nodes?
- Which abstract data structure operates on a First-In, First-Out (FIFO) ordering principle?
- What is the return value of executing the recursive Python function `mystery(4)`?
def mystery(n):
if n <= 1:
return 1
retur… - What is the worst-case time complexity of the standard QuickSort algorithm when the chosen pivot is consistently the smallest or largest ele…
- In Python, which of the following built-in data types is immutable?