Os fechamentos mantêm seus valores seguros
Você ainda está ajudando sua sobrinha a entender os fechamentos. Você escreveu a função get_new_func()
que retorna uma função aninhada. A função aninhada call_func()
chama qualquer função que tenha sido passada para get_new_func()
. Você também escreveu my_special_function()
, que simplesmente imprime uma mensagem informando que você está executando my_special_function()
.
Você quer mostrar à sua sobrinha que não importa o que você faça em my_special_function()
depois de passá-lo para get_new_func()
, a nova função ainda imita o comportamento da my_special_function()
original porque ela está no fechamento da nova função.
Este exercício faz parte do curso
Como escrever funções em Python
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
def my_special_function():
print('You are running my_special_function()')
def get_new_func(func):
def call_func():
func()
return call_func
new_func = get_new_func(my_special_function)
# Redefine my_special_function() to just print "hello"
def my_special_function():
____
new_func()