Замыкание (closure) — это функция, которая "запоминает" значения из внешней области видимости, даже если эта область уже недоступна.
Это один из способов создавать функции с состоянием, не используя классы
def counter():
count = 0
def inner():
nonlocal count
count += 1
return count
return inner
c = counter()
print(c()) # 1
print(c()) # 2
print(c()) # 3
📌 inner() помнит переменную count между вызовами, потому что она «замкнута» из внешней функции
Please open Telegram to view this post
VIEW IN TELEGRAM
Декораторы в Python могут принимать параметры, что делает их особенно мощными.
Это позволяет менять поведение функций в зависимости от внешних условий, не переписывая код
def repeat(times):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(times):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def greet():
print("Привет!")
greet()
# Привет!
# Привет!
# Привет!
📌 Здесь repeat(3) создаёт декоратор, который повторяет выполнение функции 3 раза
Please open Telegram to view this post
VIEW IN TELEGRAM
Замыкание (closure) — это функция, которая «запоминает» значения переменных из области видимости, где она была создана, даже если эта область уже недоступна.
Это мощный инструмент для инкапсуляции состояния без классов
def counter(start=0):
count = start
def increment():
nonlocal count
count += 1
return count
return increment
click = counter(10)
print(click()) # 11
print(click()) # 12
📌 Функция increment хранит доступ к переменной count, даже после выхода из counter
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод
remove()
удаляет первое вхождение указанного элемента из списка. Это удобно, когда нужно убрать конкретное значение, а не по индексу.fruits = ["apple", "banana", "orange", "banana"]
fruits.remove("banana")
print(fruits)
# ➜ ['apple', 'orange', 'banana']
remove() удобно использовать при очистке данных, фильтрации списков или удалении обработанных элементов. Если элемента нет, Python вызывает ValueError, поэтому перед удалением лучше проверять наличие через in
Please open Telegram to view this post
VIEW IN TELEGRAM
Свойство
line-height
управляет расстоянием между строками текста.Это влияет не только на читаемость, но и на вертикальный ритм всего интерфейса
<p class="text">
Это пример текста с увеличенным межстрочным интервалом.
</p>
<style>
.text {
font-size: 16px;
line-height: 1.8;
}
</style>
📌 В этом примере строки располагаются свободнее, благодаря line-height: 1.8
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python
dataclasses
можно сделать неизменяемыми с помощью параметра frozen=True
.Это превращает экземпляры в безопасные структуры данных, похожие на namedtuple, но с гибкостью классов.
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: int
y: int
p = Point(3, 5)
# p.x = 10 # ❌ Ошибка: объект заморожен
print(p) # Point(x=3, y=5)
📌 Используй frozen dataclass, если данные должны быть константными и безопасными по дизайну
Please open Telegram to view this post
VIEW IN TELEGRAM