Domknięcia chronią twoje wartości
Nadal pomagasz swojej siostrzenicy zrozumieć domknięcia. Napisałeś funkcję get_new_func(), która zwraca zagnieżdżoną funkcję. Zagnieżdżona funkcja call_func() wywołuje tę funkcję, która została przekazana do get_new_func(). Napisałeś też my_special_function(), która po prostu wyświetla komunikat informujący o tym, że jest wykonywana.
Chcesz pokazać siostrzenicy, że bez względu na to, co zrobisz z my_special_function() po przekazaniu jej do get_new_func(), nowa funkcja nadal naśladuje zachowanie oryginalnej my_special_function() — bo ta oryginalna wersja jest częścią domknięcia nowej funkcji.
To ćwiczenie jest częścią kursu
Pisanie funkcji w Pythonie
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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()