🐍 Укус питона 🐍
2.56K subscribers
1.01K photos
23 videos
285 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
👩‍💻 contextlib.suppress — игнорирование ошибок точечно

Иногда нужно пропустить определённые исключения, не оборачивая код в громоздкий try/except.
Для этого есть suppress() из модуля contextlib.

➡️ Пример:

from contextlib import suppress

data = {"a": 1}

with suppress(KeyError):
print(data["b"]) # Ошибка будет проигнорирована

print("Код продолжает работать")

Код продолжает работать


📌 Удобно, когда ошибка допустима и не требует обработки — например, при удалении файла, который может отсутствовать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 defaultdict — словарь с значениями по умолчанию

defaultdict из модуля collections автоматически создаёт значение для нового ключа, если он ещё не существует.

➡️ Пример:

from collections import defaultdict

data = defaultdict(list)
data["users"].append("Анна")
data["users"].append("Борис")

print(data)

defaultdict(<class 'list'>, {'users': ['Анна', 'Борис']})


📌 Удобно при группировке данных и подсчёте значений — не нужно проверять, есть ли ключ в словаре.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код?
👩‍💻 setdefault — добавление ключа, если его нет

Метод словаря 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
👩‍💻 chain — объединение нескольких последовательностей

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 — меньше кода для классов

@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() возвращает пары (индекс, значение), что удобно при работе с циклами.

enumerate() применяют, когда нужен доступ к индексу и самому элементу одновременно — например, при отладке, нумерации строк, формировании таблиц или логов. Это делает код более питоничным и компактным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Декораторы в Python — функции над функциями

В 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 Comprehensions — краткий способ создавать списки

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
👩‍💻 Что такое генераторы в Python

Генераторы — это функции, которые возвращают значения по одному с помощью ключевого слова 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