hola:
no es mi fuerte explicar pero veamos:
no sobreescribe la función input de python, solo que al crear una con el mismo "nombre", está toma el primer valor y la "original" deja de estar presente en este código
try:
input.n += 1
la primera vez que se ejecuta este código dará una excepción, porque claro input no posee un método o propiedad n
except Exception:
input.n = 0
return inputs.split()[input.n]
lo cual te trae acá y ahora se asigna a input.n el valor 0, a partir de ahora existe input.n
el retorno no es otra cosa que el elemento de una lista a partir del índice que en este caso es 0, o sea el primer elemento de la conversión de la cadena inputs a lista = emanuel, pero recordemos que ahora si existe input.n
la segunda vez que se llama a la función al existir input.n se le asigna el valor 1 y regresa lo mismo que antes salvo que el índice es 1 y se irá incrementando a medida que llames a la función.
perdón sino soy muy claro , pero es simple de entender y se me dificullta de transmitir.
Saludos.