Замыкание - это функциональный объект, который запоминает значения в охватывающих областях, даже если они не присутствуют в памяти. Давайте перейдем к этому шаг за шагом
Во-первых, вложенная функция - это функция, определенная внутри другой функции. Очень важно отметить, что вложенные функции могут обращаться к переменным охватывающей области. Однако, по крайней мере, в Python они доступны только для чтения. Однако можно явно использовать ключевое слово "нелокальный" с этими переменными, чтобы изменить их.
Например:
Это работает хорошо, поскольку функция data_transmitter может получить доступ к сообщению. Чтобы продемонстрировать использование ключевого слова "нелокальный", рассмотрим это
Без ключевого слова nonlocal вывод будет «3 9», однако с его использованием мы получим «3 3», то есть значение переменной «number» будет изменено.
Теперь, как насчет того, чтобы мы вернули объект функции, а не вызывали вложенную функцию внутри него. (Помните, что даже функции являются объектами (это Python.))
И вызываем функцию следующим образом:
Даже несмотря на то, что выполнение «transfer_to_space ()» было завершено, сообщение скорее сохранилось. Этот метод, с помощью которого данные прикрепляются к некоторому коду даже после завершения этих других исходных функций, называется закрытием в python.
ПРЕИМУЩЕСТВО: замыкания позволяют избежать использования глобальных переменных и обеспечивают некоторую форму сокрытия данных (например, когда в классе мало методов, используйте замыкания).
Кроме того, декораторы в Python широко используют замыкания.
Создайте вложенный цикл и закрытие Python, чтобы функции получали несколько функций умножения с помощью замыканий. То есть, используя замыкания, можно создать функции для создания функций multiply_with_5 () или multiply_with_4 () с использованием замыканий.