Метод словаря
setdefault()
возвращает значение по ключу, а если ключ отсутствует — создаёт его с указанным значением.user = {"name": "Анна"}
city = user.setdefault("city", "Москва")
print(city) # Москва
print(user) # {'name': 'Анна', 'city': 'Москва'}
📌 Удобно для инициализации значений в словаре без лишних проверок if key not in dict.
Please open Telegram to view this post
VIEW IN TELEGRAM
itertools.chain()
позволяет перебирать элементы из нескольких итерируемых объектов так, будто это один.from itertools import chain
a = [1, 2]
b = [3, 4]
c = [5]
for x in chain(a, b, c):
print(x, end=" ")
1 2 3 4 5
📌 Удобно, когда нужно пройтись по нескольким спискам подряд без создания нового объединённого списка.
Please open Telegram to view this post
VIEW IN TELEGRAM
@dataclass
из модуля dataclasses
автоматически создаёт методы __init__
, __repr__
, __eq__
и другие на основе аннотаций полей.from dataclasses import dataclass
@dataclass
class User:
name: str
age: int
u = User("Анна", 25)
print(u) # User(name='Анна', age=25)
📌 Удобно для хранения данных: меньше шаблонного кода, больше читаемости.
Please open Telegram to view this post
VIEW IN TELEGRAM
enumerate()
в Python и когда её применять?Функция
enumerate()
позволяет итерироваться по элементам последовательности вместе с их индексами. Это избавляет от необходимости вручную вести счётчик и делает код более чистым и читаемым.fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)
# Вывод:
# 1 apple
# 2 banana
# 3 cherry
enumerate() применяют, когда нужен доступ к индексу и самому элементу одновременно — например, при отладке, нумерации строк, формировании таблиц или логов. Это делает код более питоничным и компактным.
Please open Telegram to view this post
VIEW IN TELEGRAM
В Python декораторы позволяют изменять поведение функций без изменения их кода.
Это "обёртки", которые выполняются до или после основной функции.
def logger(func):
def wrapper(*args, **kwargs):
print(f"Вызов функции {func.__name__}")
return func(*args, **kwargs)
return wrapper
@logger
def say_hello(name):
print(f"Привет, {name}!")
say_hello("Анна")
📌 Здесь @logger добавляет логирование при вызове say_hello, не меняя её код.
Please open Telegram to view this post
VIEW IN TELEGRAM
List comprehension в Python позволяет создавать списки в одну строку вместо циклов. Это делает код компактнее и читаемее
# Обычный способ
squares = []
for i in range(1, 6):
squares.append(i**2)
# List comprehension
squares_compact = [i**2 for i in range(1, 6)]
print(squares_compact) # [1, 4, 9, 16, 25]
📌 Это удобный инструмент для фильтрации и преобразования данных в Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
Генераторы — это функции, которые возвращают значения по одному с помощью ключевого слова yield.
В отличие от списков, они не хранят все данные в памяти сразу, а создают их "на лету".
def count_up_to(n):
for i in range(1, n + 1):
yield i
for num in count_up_to(5):
print(num)
📌 Генераторы экономят память и ускоряют работу с большими данными.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ключевое слово with автоматически управляет открытием и закрытием ресурсов (например, файлов).
Не нужно вручную писать close(), даже если возникнет ошибка.
with open("data.txt", "w") as f:
f.write("Привет, Python!")
📌 После выхода из блока файл закроется автоматически. with упрощает код и предотвращает утечки ресурсов.
Please open Telegram to view this post
VIEW IN TELEGRAM