Введение в Python

Что такое замыкание? Как сделать это в Python?

Что такое замыкание? Как сделать это в Python?
В: Введение в Python

Замыкание - это функциональный объект, который запоминает значения во вложенных областях, даже если они отсутствуют в памяти. Давайте пройдем шаг за шагом

Во-первых, Вложенная Функция это функция, определенная внутри другой функции. Очень важно отметить, что вложенные функции могут обращаться к переменным вмещающей области. Тем не менее, по крайней мере в Python, они доступны только для чтения. Однако с этими переменными можно явно использовать ключевое слово «nonlocal», чтобы изменить их.

Например:

def transmit_to_space(message):
    "This is the enclosing function"
    def data_transmitter():
        "The nested function"
        print(message)

    data_transmitter()

print(transmit_to_space("Test message"))

Вариант хорошо работает, так как функция «data_transmitter» может получить доступ к «сообщению». Чтобы продемонстрировать использование нелокального ключевого слова, рассмотрите следующее

def print_msg(number):
    def printer():
        "Here we are using the nonlocal keyword"
        nonlocal number
        number=3
        print(number)
    printer()
    print(number)

print_msg(9)

Без нелокального ключевого слова результат будет "3 9", однако при его использовании мы получим "3 3", то есть значение переменной "number" будет изменено.

Теперь давайте вернемся к объекту функции, а не к вызову вложенной функции. (Помните, что даже функции являются объектами. (Это Python.))

def transmit_to_space(message):
    "This is the enclosing function"
    def data_transmitter():
        "The nested function"
        print(message)
    return data_transmitter

И мы вызываем функцию следующим образом:

  def transmit_to_space(message):
    "This is the enclosing function"
    def data_transmitter():
        "The nested function"
        print(message)
    return data_transmitter

  fun2 = transmit_to_space("Burn the Sun!")
  fun2()

Несмотря на то, что выполнение функции "trans_to_space ()" было завершено, сообщение было скорее вчего сохранено. Эта техника, с помощью которой данные прикрепляются к некоторому коду даже после завершения тех других исходных функций, называется в Python замыканиями.

ПРЕИМУЩЕСТВО: Замыкания могут избежать использования глобальных переменных и предоставляют некоторую форму сокрытия данных (например, когда в классе мало методов, используйте вместо этого замыкания).

Кроме того, Декораторы в Python широко используют замыкания.

Упражнение

Сделайте вложенный цикл и замыкание Python, чтобы сделать функции для получения нескольких функций умножения с использованием замыканий. То есть, используя замыкания, можно создавать функции для создания функций multiply_with_5 () или multiply_with_4 () с использованием замыканий.

# your code goes here multiplywith5 = multiplier_of(5) multiplywith5(9) def multiplier_of(n): def multiplier(number): return number*n return multiplier multiplywith5 = multiplier_of(5) print(multiplywith5(9)) test_output_contains("45") success_msg("Great work!")
Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.