Python é uma linguagem muito flexível e permite a criação de funções praticamente em qualquer lugar do código. Você pode definir uma nova função dentro de um bloco if, um laço for ou dentro de outra função:
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
Aqui, nós definimos uma nova função greet() que atua como uma utilidade para não repetir as instruções if e else para todos os 3 nomes na função process().
Note que as funções internas têm acesso a todas as variáveis definidas acima delas. Então, em nosso exemplo, a função greet() tem acesso a name1, name2 e name3.
Desafio
Modifique a função para que ela retorne uma lista de todos os divisores dos números passados para ela. Adicione uma função interna que retorne uma lista de divisores para um único número.