Python es un lenguaje muy flexible y permite la creación de funciones prácticamente en cualquier parte del código. Se puede definir una nueva función dentro de un bloque if, un bucle for o dentro de otra función:
def process(name1, name2, name3):
def greet(name):
if len(name) < 5:
print(f'Hi, {name}')
else:
print('The name is too long')
greet(name1)
greet(name2)
greet(name3)
process('Anna', 'Bob', 'Daniel')
# Hi, Anna
# Hi, Bob
# The name is too long
Aquí hemos definido una nueva función greet() que actúa como una utilidad para no repetir las sentencias if y else para los 3 nombres en la función process().
Nota que las funciones internas tienen acceso a todas las variables definidas antes que ellas. Así que, en nuestro ejemplo, la función greet() tiene acceso a name1, name2 y name3.
Desafío
Modifica la función para que devuelva una lista de todos los divisores de los números que se le pasan. Añade una función interna que devuelva una lista de divisores para un solo número.