Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Привет всем, яодна чаша в неделю, передняя часть, которая не хочет быть пьяной (завернутой). Если написанной статье посчастливилось получить вашу благосклонность, мне очень повезло~
Закрытие
Концепция, предлагаемая замыканиями в функциях, заключается в том, что определение функции ссылается на переменные, определенные вне функции, и функция может выполняться вне среды своего определения. Такая функция называется замыканием. На самом деле замыкания можно рассматривать как более общую концепцию функций. Потому что это больше не функция, определяемая в традиционном смысле.
Концепция замыканий существует не только в Python, но и практически в любом языке программирования.
Условия закрытия:
- Внутренняя функция определяется во внешней функции
- Внешние функции имеют возвращаемые значения
- Возвращаемое значение: внутренняя функция
- Внутренняя функция также ссылается на переменные внешней функции.
Формат следующий:
def 外部函数():
...
def 内部函数():
...
return 内部函数
образец кода
def func():
a = 100
def inner_func():
b = 200
print(a, b)
return inner_func
x = func()
print(x) # <function func.<locals>.inner_func at 0x0000021704CD9620>
x() # 100 200
# 这样就可以直接调用inner_func函数,如果return不返回一个内部函数的话是不会有任何输出的
Использование замыканий также может дополнить эффект счетчика.
def generate_count():
container = [0]
def add_one():
container[0] += 1
print(f"这是第{container[0]}次调用")
return add_one
count = generate_count()
count() # 这是第1次调用
count() # 这是第2次调用
count() # 这是第3次调用
закрытонедостатокСледующее:
- Сфера не так интуитивна
- Поскольку переменные не собираются мусором, существует определенный объем памяти.
закрытоэффектСледующее:
- Может использовать родственную область видимости
- Чтение внутренних переменных других элементов
- расширить сферу