Función de recursión en Python

Considera esta recursión básica en Python:

def fibonacci(number):
    if number == 0: return 0
    elif number == 1:
        return 1
    else:
        return fibonacci(number-1) + fibonacci(number-2)

Lo que tiene sentido de acuerdo con la función (n-1) + (n-2) de la serie Fibonacci.

¿Cómo ejecuta Python la recursión que contiene otra recursión no dentro de la misma línea de código? ¿El 'finobacci (número-1)' completa toda la recursión hasta que alcanza el '1' y luego hace lo mismo con 'fibonacci (número-2)' y los agrega?

A modo de comparación, la siguiente función recursiva para elevar un número 'x' al poder 'y', puedo entender la recursión, sin duda llamándose hasta y == 0, ya que solo hay una llamada recursiva en una sola línea. Aún así, ¿no deberían ser todos los resultados '1' ya que el último comando ejecutado es 'return 1' cuando y == 0, por lo tanto, no se devuelve x?

def power(x, y):
    if y == 0:
        return 1
    else:
        return x*power(x, y-1)

Respuestas a la pregunta(9)

Su respuesta a la pregunta