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

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

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Что выведет следующий код?
👩‍💻 dataclasses — меньше кода для классов с данными

Модуль dataclasses позволяет быстро описывать классы-хранилища данных без лишнего шаблонного кода.

➡️ Пример:

from dataclasses import dataclass

@dataclass
class User:
name: str
age: int = 0

u = User("Анна", 25)
print(u) # User(name='Анна', age=25)


📌 Что даёт @dataclass:

Автоматически создаёт __init__, __repr__, __eq__
Поддерживает значения по умолчанию
Можно добавлять методы, как в обычном классе

Идеально подходит для структурированных объектов — например, при работе с API, конфигами или моделями
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 itertools.cycle — бесконечный цикл по списку

Функция cycle() из модуля itertools позволяет бесконечно перебирать элементы последовательности по кругу.

➡️ Пример:

from itertools import cycle

colors = ["red", "green", "blue"]

for i, color in zip(range(7), cycle(colors)):
print(color)


red
green
blue
red
green
blue
red


📌 Удобно для создания повторяющихся шаблонов, переключения состояний или циклической анимации

Работает с любыми итерируемыми объектами
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет следующий код?
👩‍💻 functools.lru_cache — кэширование результатов функций

Декоратор lru_cache из модуля functools сохраняет результаты вызовов функции, чтобы не пересчитывать их заново.

Это ускоряет работу, особенно для тяжёлых вычислений.


➡️ Пример:

from functools import lru_cache

@lru_cache(maxsize=None)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)

print(fib(30)) # Считает быстро благодаря кэшу


📌 Полезно для рекурсивных функций, работы с API или долгих расчётов.

maxsize ограничивает количество сохранённых результатов (или None для безлимита).
Please open Telegram to view this post
VIEW IN TELEGRAM