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

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

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
👩‍💻 slice — продвинутая нарезка последовательностей

Объект slice позволяет создавать диапазоны с шагом, которые можно применять к спискам, строкам и другим последовательностям.

➡️ Пример:

text = "Программирование"
s = slice(0, 10, 2)

print(text[s]) # Погрмр


📌 slice(start, stop, step) — аналог среза text[0:10:2], но его можно передавать как переменную.

Полезно, когда срез нужно вычислять динамически или передавать в функцию
Please open Telegram to view this post
VIEW IN 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
Зачем используется функция len() в Python и когда её применять?

Функция len() возвращает количество элементов в итерируемом объекте или длину строки. Это удобный способ быстро получить размер коллекции или проверить, пуста ли она.

Пример:

items = ["apple", "banana", "orange"]
count = len(items)
print(count)
# ➜ 3


📌В этом примере len() возвращает количество элементов списка.

len() удобно использовать при работе со списками, строками, словарями, множествами и любыми коллекциями. Она помогает проверять пустоту (if len(list) > 0), контролировать размеры данных и писать более читаемый код.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет следующий код?
👩‍💻 pathlib — современная работа с путями

Модуль pathlib упрощает работу с файлами и папками, заменяя старый os.path.

Объекты Path интуитивнее и поддерживают операции как с обычными переменными.


➡️ Пример:

from pathlib import Path

path = Path("example.txt")

if path.exists():
print("Файл существует")
else:
print("Файла нет")


📌 pathlib работает кроссплатформенно, поддерживает удобное объединение путей (/), чтение, запись и обход директорий.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 enumerate + start — нумерация с любого числа

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

➡️ Пример:

tasks = ["Купить хлеб", "Выучить Python", "Сделать проект"]

for i, task in enumerate(tasks, start=1):
print(f"{i}. {task}")

1. Купить хлеб
2. Выучить Python
3. Сделать проект


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

Функция zip_longest() из модуля itertools объединяет несколько последовательностей, заполняя недостающие значения указанным значением.

➡️ Пример:

from itertools import zip_longest

names = ["Анна", "Борис"]
scores = [90]

for name, score in zip_longest(names, scores, fillvalue="—"):
print(name, score)

Анна 90
Борис —


📌 Полезно при работе с данными разной длины, чтобы не потерять элементы.
Please open Telegram to view this post
VIEW IN TELEGRAM