type()
в Python и когда её применять?Функция
type()
возвращает тип переданного объекта. Это удобно для отладки, валидации данных и динамического изменения поведения программы в зависимости от типа.value = 42
print(type(value))
# ➜ <class 'int'>
В этом примере
type()
показывает, что переменная value является целым числом (int
).type() удобно использовать при проверке типов в отладке, логировании, написании универсальных функций и метаклассов. Она помогает писать более надёжный и предсказуемый код, особенно в больших проектах
Please open Telegram to view this post
VIEW IN TELEGRAM
Иногда нужно пропустить определённые исключения, не оборачивая код в громоздкий
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
из модуля 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()
возвращает значение по ключу, а если ключ отсутствует — создаёт его с указанным значением.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