Замикання
Свайпніть щоб показати меню
Замикання проти вкладених функцій
Вкладена функція — це будь-яка функція, яку визначено всередині іншої функції. Вкладені функції корисні для організації коду та обмеження області видимості допоміжних функцій. Однак не всі вкладені функції є замиканнями.
Замикання — це особливий тип вкладеної функції. Замикання — це вкладені функції, які "запам'ятовують" і можуть отримувати доступ до змінних із області видимості зовнішньої функції, навіть після завершення виконання зовнішньої функції. Це означає, що замикання можуть зберігати стан між кількома викликами.
Основні моменти:
- Усі замикання є вкладеними функціями;
- Не всі вкладені функції є замиканнями;
- Вкладена функція стає замиканням лише тоді, коли вона використовує змінні із області видимості зовнішньої функції, і ці змінні залишаються доступними після повернення зовнішньої функції.
Це розрізнення важливе для розуміння того, як Python керує областю видимості змінних і як можна використовувати замикання для інкапсуляції стану та поведінки разом.
12345678910def make_greeter(name): def greet(): return f"Hello, {name}!" return greet greeter = make_greeter("Alice") print(greeter()) another_greeter = make_greeter("Bob") print(another_greeter())
Коли ви викликаєте make_greeter("Alice"), Python створює нову функцію greet, яка запам'ятовує значення змінної name як "Alice". Навіть після завершення виконання make_greeter, повернена функція greet все ще має доступ до змінної name зі своєї початкової області видимості. Саме тому виклик greeter() виводить Hello, Alice!, а виклик another_greeter() — Hello, Bob!. Кожне замикання зберігає власну копію необхідних йому змінних.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат