Why functions are needed in Python - Performance Analysis
Functions help us organize code into reusable parts. Understanding their time cost helps us see how adding functions affects program speed.
We want to know how using functions changes the number of steps a program takes as input grows.
Analyze the time complexity of the following code snippet.
def square_numbers(nums):
result = []
for n in nums:
result.append(n * n)
return result
numbers = [1, 2, 3, 4, 5]
squares = square_numbers(numbers)
print(squares)
This code defines a function to square each number in a list and then calls it.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each number in the list inside the function.
- How many times: Once for each number in the input list.
Explain the growth pattern intuitively.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 times the loop runs |
| 100 | About 100 times the loop runs |
| 1000 | About 1000 times the loop runs |
Pattern observation: The number of steps grows directly with the number of items. Double the items, double the work.
Time Complexity: O(n)
This means the time to run grows in a straight line with the input size.
[X] Wrong: "Using a function always makes the program slower because it adds extra steps."
[OK] Correct: The function itself just wraps the same steps. The main work is still looping through the list, so the time depends on input size, not on using a function.
Knowing how functions affect time helps you write clear code without worrying about hidden slowdowns. It shows you can think about both code design and speed.
"What if the function called itself recursively for each number? How would the time complexity change?"