It doesn't matter in which order the functions are created. It only matters when the call to the function is done:
def print_sum(a, b):
    print(sum_numbers(a, b))
def sum_numbers(a, b):
    return a + b
print_sum(1, 3)
# 4
that works because at the time print_sum is called both functions do exist. However if you call the function before defining sum_numbers it would fail because sum_numbers isn't defined yet:
def print_sum(a, b):
    print(sum_numbers(a, b))
print_sum(1, 3)
def sum_numbers(a, b):
    return a + b
throws:
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-34-37c0e3733861> in <module>()
      2     print(sum_numbers(a, b))
      3 
----> 4 print_sum(1, 3)
      5 
      6 def sum_numbers(a, b):
<ipython-input-34-37c0e3733861> in print_sum(a, b)
      1 def print_sum(a, b):
----> 2     print(sum_numbers(a, b))
      3 
      4 print_sum(1, 3)
      5 
NameError: name 'sum_numbers' is not defined