Closure
Замикання (closure) в Python використовуються, коли внутрішні функції знаходяться всередині зовнішньої функції, або іншими словами, коли вкладена функція посилається на значення з охоплюючої області видимості. Замикання допомагають уникнути використання глобальних змінних.
Їх доцільно використовувати, коли потрібно реалізувати кілька методів, але їхня кількість недостатня для створення класу, тому замикання дає більш зрозуміле рішення. Але коли кількість атрибутів і методів зростає, краще реалізувати клас.
Розглянемо кілька прикладів:
def calculate_taxes(percentage):
def taxes(sum_of_money):
return sum_of_money * percentage / 100
return taxes
# Податок — 5%
taxes_5 = calculate_taxes(5)
# Податок — 10%
taxes_10 = calculate_taxes(10)
print(taxes_5(1000)) # 50.0
print(taxes_5(4000)) # 200.0
print(taxes_5(6500)) # 325.0
print(taxes_10(1000)) # 100.0
print(taxes_10(4000)) # 400.0
print(taxes_10(6500)) # 650.0
Цей приклад показує, що якщо ми знаємо, що нам потрібно обчислити 5% або 10% податку з різних сум кілька разів, ми можемо записати цей відсоток один раз за допомогою замикання і використовувати його багато разів.