Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Замикання | Область видимості змінних, вкладені функції та замикання
Концепції функціонального програмування в Python

bookЗамикання

Свайпніть щоб показати меню

Замикання проти вкладених функцій

Вкладена функція — це будь-яка функція, яку визначено всередині іншої функції. Вкладені функції корисні для організації коду та обмеження області видимості допоміжних функцій. Однак не всі вкладені функції є замиканнями.

Замикання — це особливий тип вкладеної функції. Замикання — це вкладені функції, які "запам'ятовують" і можуть отримувати доступ до змінних із області видимості зовнішньої функції, навіть після завершення виконання зовнішньої функції. Це означає, що замикання можуть зберігати стан між кількома викликами.

Основні моменти:

  • Усі замикання є вкладеними функціями;
  • Не всі вкладені функції є замиканнями;
  • Вкладена функція стає замиканням лише тоді, коли вона використовує змінні із області видимості зовнішньої функції, і ці змінні залишаються доступними після повернення зовнішньої функції.

Це розрізнення важливе для розуміння того, як Python керує областю видимості змінних і як можна використовувати замикання для інкапсуляції стану та поведінки разом.

12345678910
def 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())
copy

Коли ви викликаєте make_greeter("Alice"), Python створює нову функцію greet, яка запам'ятовує значення змінної name як "Alice". Навіть після завершення виконання make_greeter, повернена функція greet все ще має доступ до змінної name зі своєї початкової області видимості. Саме тому виклик greeter() виводить Hello, Alice!, а виклик another_greeter()Hello, Bob!. Кожне замикання зберігає власну копію необхідних йому змінних.

question mark

Що робить функцію замиканням?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 8

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 3. Розділ 8
some-alt