Middle
Is it good or bad to pass mutable data types as function arguments?
sobes.tech AI
Answer from AI
Passing mutable data types to a function can be both useful and dangerous. If the function modifies the passed object, it can lead to side effects that are hard to track, especially in large projects.
Pros:
- Saves memory and time, as no copies of data are created.
- Allows the function to directly modify the object's state.
Cons:
- Debugging becomes difficult due to unexpected data changes outside the function.
- Violates the principles of locality and purity of functions.
Recommendation: If a function is supposed to modify an object, this should be explicitly documented. Otherwise, it is better to pass copies or use immutable types to avoid side effects.
Example in Python:
def add_item(lst, item):
lst.append(item) # modifies the original list
my_list = [1, 2]
add_item(my_list, 3)
print(my_list) # [1, 2, 3] — the list has changed outside the function