querySelectorAll()
в JavaScript и когда его применять?Метод
querySelectorAll()
возвращает список всех элементов, соответствующих указанному CSS-селектору. Это удобно, когда нужно сразу получить несколько элементов для обработки или изменений.<ul>
<li class="item">Apple</li>
<li class="item">Banana</li>
<li class="item">Orange</li>
</ul>
<script>
const items = document.querySelectorAll(".item");
items.forEach(el => el.style.color = "blue");
</script>
querySelectorAll() удобно использовать при работе со списками, карточками, формами и динамическими интерфейсами. Он поддерживает любые CSS-селекторы и позволяет легко применять массовые изменения к группе элементов
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python функции — это не особый синтаксис, а объекты первого класса.
Их можно присваивать переменным, передавать в другие функции и возвращать как значения
def greet(name):
return f"Привет, {name}!"
say_hello = greet # присвоили функцию переменной
print(say_hello("Анна")) # Привет, Анна!
def run(func, arg):
print(func(arg))
run(greet, "Борис") # можно передавать функцию как аргумент
📌 Понимание, что функции — такие же объекты, как строки или списки,
открывает путь к лямбдам, декораторам и функциональному стилю в Python
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python аргументы передаются по ссылке на объект, а не по значению.
Если функция изменяет мутабельный объект (список, словарь), изменения сохраняются снаружи
def add_item(items):
items.append("новый элемент")
data = ["a", "b"]
add_item(data)
print(data) # ['a', 'b', 'новый элемент']
📌 Функция не вернула новый список — она изменила существующий. Чтобы избежать этого, передавай копию (items[:] или items.copy()).
Please open Telegram to view this post
VIEW IN TELEGRAM
Замыкание (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