Замыкания защищают ваши значения
Вы продолжаете помогать племяннице разобраться с замыканиями. Вы написали функцию get_new_func(), которая возвращает вложенную функцию. Вложенная функция call_func() вызывает ту функцию, которая была передана в get_new_func(). Также вы написали функцию my_special_function(), которая просто выводит сообщение о том, что выполняется my_special_function().
Вы хотите показать племяннице: что бы вы ни сделали с my_special_function() после передачи её в get_new_func(), новая функция по-прежнему воспроизводит поведение исходной my_special_function() — потому что та сохранена в замыкании новой функции.
Это упражнение является частью курса
Написание функций на Python
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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()