Объект
slice
позволяет задавать срезы с шагом и использовать их многократно, вместо написания вручную.data = [0, 1, 2, 3, 4, 5, 6]
s = slice(1, 6, 2) # от 1 до 5 с шагом 2
print(data[s]) # [1, 3, 5]
📌 Удобно, когда нужно часто брать одинаковые фрагменты из списков, строк или других последовательностей
Please open Telegram to view this post
VIEW IN TELEGRAM
Counter из модуля collections автоматически считает количество вхождений элементов в коллекции.
from collections import Counter
fruits = ["яблоко", "банан", "яблоко", "груша", "банан", "яблоко"]
count = Counter(fruits)
print(count) # Counter({'яблоко': 3, 'банан': 2, 'груша': 1})
print(count.most_common(1)) # [('яблоко', 3)]
📌 Удобно для анализа данных, статистики и поиска самых частых элементов
Please open Telegram to view this post
VIEW IN TELEGRAM
get()
у словарей в Python и когда его применять?Метод
get()
возвращает значение по ключу, если он существует, и безопасно возвращает заданное значение по умолчанию, если ключ не найден. Это предотвращает ошибки при доступе к несуществующим ключам.user = {"name": "Alice", "age": 25}
print(user.get("age")) # ➜ 25
print(user.get("city", "N/A")) # ➜ N/A
get() удобно использовать при работе с данными из API, JSON, конфигурациями или базами, где некоторые ключи могут отсутствовать. Это делает код надёжнее и чище, чем использование прямого доступа через []
Please open Telegram to view this post
VIEW IN TELEGRAM
enumerate()
добавляет индекс к каждому элементу итерируемого объекта.Чаще всего используется в циклах вместо range(len(...)).
fruits = ["яблоко", "банан", "груша"]
for i, fruit in enumerate(fruits, start=1):
print(i, fruit)
1 яблоко
2 банан
3 груша
📌 Код становится чище и читаемее, особенно при работе со списками и строками
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python объекты делятся на изменяемые (mutable) и неизменяемые (immutable).
Это фундамент — от него зависят поведение списков, кортежей и даже ошибки с «копиями»
a = [1, 2, 3]
b = a
b.append(4)
print(a) # [1, 2, 3, 4]
print(a is b) # True
b
не копия, а ссылка на тот же объект в памяти. Изменяемые типы (list
, dict
, set
) ведут себя именно так. А вот неизменяемые (int
, str
, tuple
) при изменении создают новый объект.📌 Понимание мутабельности — ключ к тому, чтобы не ломать данные «по ссылке» и писать предсказуемый код
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python переменные — это не “коробки с данными”, а имена, указывающие на объекты в памяти.
Когда ты присваиваешь значение, создаётся объект, а имя просто ссылается на него.
x = [1, 2, 3]
y = x
y.append(4)
print(x) # [1, 2, 3, 4]
print(x is y) # True
x
и y
указывают на один и тот же объект — изменения отражаются в обоих. Чтобы создать независимую копию, нужно использовать copy()
или модуль copy
.📌 В Python важно понимать: присваивание не копирует данные, а лишь создаёт новую ссылку.
Отсюда рождаются большинство «неожиданных» багов у новичков
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python функция может «запомнить» значения из внешней области, даже если она уже не существует.
Это и есть замыкание — ключевой инструмент для инкапсуляции логики и данных без классов
def make_multiplier(factor):
def multiply(x):
return x * factor
return multiply
double = make_multiplier(2)
print(double(5)) # 10
multiply
помнит значение factor
, даже после завершения make_multiplier
. То есть double
— это функция, замкнувшая внутри себя factor = 2
.📌 Замыкания лежат в основе декораторов, фабрик функций и ленивых вычислений.
Понимание этой концепции — шаг от простого Python к "питонистому" коду
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда ты обращаешься к переменной, Python ищет её не хаотично, а строго по цепочке LEGB:
Local → Enclosing → Global → Built-in
x = "глобальная"
def outer():
x = "замыкание"
def inner():
x = "локальная"
print(x)
inner()
outer()
локальная
Если убрать
x = "локальная"
, Python возьмёт x
из ближайшей внешней области — "замыкание"
.Если и там нет — из глобальной.
📌 Понимание LEGB помогает избегать неожиданных конфликтов имён и багов при работе с функциями и замыканиями
Please open Telegram to view this post
VIEW IN TELEGRAM