Let's say I have two functions in my script: sum_numbers
and print_sum
. Their implementation is like this:
def sum_numbers(a, b):
return a + b
def print_sum(a, b):
print(sum_numbers(a, b))
So my question is: does the order in which the function are written matter? If I had written the print_sum
function first and then the sum_numbers
, would the code still work? If the answer is yes, does it always work?
The only thing that Python cares about is that the name is defined when it is actually looked up. That's all.
In your case, this is just fine, order doesn't really matter since you are just defining two functions. That is, you are just introducing two new names, no look-ups.
Now, if you called one of these (in effect, performed a look-up) and switched the order around:
you'd be in trouble (
NameError
) because it will try to find a name (sum_numbers
) that just doesn't exist yet.So in general, yes, the order does matter; there's no hoisting of names in Python like there is in other languages (e.g JavaScript).
It doesn't matter in which order the functions are created. It only matters when the call to the function is done:
that works because at the time
print_sum
is called both functions do exist. However if you call the function before definingsum_numbers
it would fail becausesum_numbers
isn't defined yet:throws: