byteofpython | Unsorted

Telegram-канал byteofpython - 🐍 Укус питона 🐍

2619

🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки. 👽 Админ - @it_dashka 🔊 Купить рекламу: https://telega.in/c/byteofpython 👉 Чат: @abyteofpython 👉 Поделиться с друзьями: @byteofpython

Subscribe to a channel

🐍 Укус питона 🐍

👩‍💻 collections.deque — очередь с двумя концами

deque из модуля collections — это двусторонняя очередь, которая работает быстрее списка при добавлении и удалении элементов с краёв.

➡️ Пример:

from collections import deque

queue = deque([1, 2, 3])
queue.append(4) # добавляем справа
queue.appendleft(0) # добавляем слева
queue.pop() # удаляем справа
queue.popleft() # удаляем слева

print(queue) # deque([1, 2, 3])


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

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 zip — объединение последовательностей

Функция zip() объединяет элементы из нескольких коллекций в кортежи по индексам.

Удобно для параллельного перебора данных


➡️ Пример:

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

for name, score in zip(names, scores):
print(f"{name}: {score}")

Анна: 90
Борис: 85
Вера: 78


📌 Если длины разные, перебор остановится по самому короткому списку

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 isinstance — проверка типа объекта

Функция isinstance() проверяет, относится ли объект к указанному типу (или кортежу типов).
Полезно для валидации данных и написания универсальных функций.

➡️ Пример:

x = 3.14

if isinstance(x, (int, float)):
print("Это число")

Это число


📌 Удобнее и безопаснее, чем сравнение через type().

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 with — безопасная работа с ресурсами

Ключевое слово with автоматически управляет открытием и закрытием ресурсов (например, файлов).

Не нужно вручную писать close(), даже если возникнет ошибка.


➡️ Пример:

with open("data.txt", "w") as f:
f.write("Привет, Python!")


📌 После выхода из блока файл закроется автоматически. with упрощает код и предотвращает утечки ресурсов.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 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.

Читать полностью…

🐍 Укус питона 🐍

Зачем используется функция 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() применяют, когда нужен доступ к индексу и самому элементу одновременно — например, при отладке, нумерации строк, формировании таблиц или логов. Это делает код более питоничным и компактным.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 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


📌 Удобно, когда нужно пройтись по нескольким спискам подряд без создания нового объединённого списка.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 defaultdict — словарь с значениями по умолчанию

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

➡️ Пример:

from collections import defaultdict

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

print(data)

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


📌 Удобно при группировке данных и подсчёте значений — не нужно проверять, есть ли ключ в словаре.

Читать полностью…

🐍 Укус питона 🐍

Зачем используется функция type() в Python и когда её применять?

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

Пример:

value = 42
print(type(value))
# ➜ <class 'int'>


В этом примере type() показывает, что переменная value является целым числом (int).

type() удобно использовать при проверке типов в отладке, логировании, написании универсальных функций и метаклассов. Она помогает писать более надёжный и предсказуемый код, особенно в больших проектах

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 else после цикла — неочевидная фишка Python

В Python можно использовать else не только с if, но и с циклами for и while.

Он выполняется только если цикл завершился без break.


➡️ Пример:

nums = [1, 3, 5, 7]

for n in nums:
if n % 2 == 0:
print("Есть чётное")
break
else:
print("Все числа нечётные")

Все числа нечётные


📌 Удобно для поиска: если ничего не найдено — выполнится else. Работает как "не прервали — тогда делай...".

Читать полностью…

🐍 Укус питона 🐍

Что выведет следующий код и почему?

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 pathlib — современная работа с путями

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

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


➡️ Пример:

from pathlib import Path

path = Path("example.txt")

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


📌 pathlib работает кроссплатформенно, поддерживает удобное объединение путей (/), чтение, запись и обход директорий.

Читать полностью…

🐍 Укус питона 🐍

Зачем используется функция len() в Python и когда её применять?

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

Пример:

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


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

len() удобно использовать при работе со списками, строками, словарями, множествами и любыми коллекциями. Она помогает проверять пустоту (if len(list) > 0), контролировать размеры данных и писать более читаемый код.

Читать полностью…

🐍 Укус питона 🐍

Что выведет следующий код?

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 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, конфигами или моделями

Читать полностью…

🐍 Укус питона 🐍

Зачем используется функция sorted() в Python и когда её применять?

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

Пример:

numbers = [5, 2, 9, 1, 7]
sorted_nums = sorted(numbers)
print(sorted_nums)
# ➜ [1, 2, 5, 7, 9]
print(numbers)
# ➜ [5, 2, 9, 1, 7] (оригинал не изменился)


📌В этом примере sorted() создала новый список с числами по возрастанию, не затронув исходный.

sorted() удобно использовать для сортировки строк, чисел, словарей по значениям, а также при обработке данных в аналитике и ML. Благодаря параметрам reverse и key функция остаётся гибкой и читаемой.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 enumerate — индексы и элементы вместе

Функция enumerate() позволяет перебирать коллекцию с индексами без range(len(...)).

Код становится чище и читаемее.


➡️ Пример:

fruits = ["яблоко", "банан", "груша"]

for i, fruit in enumerate(fruits, start=1):
print(i, fruit)

1 яблоко
2 банан
3 груша


📌 start задаёт, с какого числа начинать счёт

Читать полностью…

🐍 Укус питона 🐍

Зачем используется метод join() в Python и когда его применять?

Метод join() объединяет элементы итерируемого объекта (обычно списка строк) в одну строку с указанным разделителем. Это удобный способ собирать строки без лишних циклов.

Пример:

words = ["Python", "is", "awesome"]
sentence = " ".join(words)
print(sentence)
# ➜ Python is awesome


📌В этом примере join() соединяет список слов в предложение через пробел.

join() удобно использовать при генерации текстов, формировании путей, обработке CSV-данных и выводе массивов строк. Он делает код лаконичным и более эффективным, чем конкатенация через + в цикле

Читать полностью…

🐍 Укус питона 🐍

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


📌 Генераторы экономят память и ускоряют работу с большими данными.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 Декораторы в 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, не меняя её код.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 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)


📌 Удобно для хранения данных: меньше шаблонного кода, больше читаемости.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 setdefault — добавление ключа, если его нет

Метод словаря setdefault() возвращает значение по ключу, а если ключ отсутствует — создаёт его с указанным значением.

➡️ Пример:

user = {"name": "Анна"}

city = user.setdefault("city", "Москва")
print(city) # Москва
print(user) # {'name': 'Анна', 'city': 'Москва'}


📌 Удобно для инициализации значений в словаре без лишних проверок if key not in dict.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 contextlib.suppress — игнорирование ошибок точечно

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

➡️ Пример:

from contextlib import suppress

data = {"a": 1}

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

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

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


📌 Удобно, когда ошибка допустима и не требует обработки — например, при удалении файла, который может отсутствовать.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 unpacking оператор * для распаковки

Оператор * позволяет распаковывать последовательности в отдельные элементы прямо в выражениях или вызовах функций

➡️ Пример:

nums = [1, 2, 3]
print(*nums) # 1 2 3

a, *middle, b = [10, 20, 30, 40, 50]
print(a, middle, b) # 10 [20, 30, 40] 50


📌 Полезно для передачи аргументов, объединения списков и элегантного извлечения частей коллекций.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 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
Борис —


📌 Полезно при работе с данными разной длины, чтобы не потерять элементы.

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 enumerate + start — нумерация с любого числа

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

➡️ Пример:

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

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

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


📌 Удобно для списков задач, меню и любых случаев, где индексация должна начинаться не с нуля.

Читать полностью…

🐍 Укус питона 🐍

Что выведет следующий код?

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 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 для безлимита).

Читать полностью…

🐍 Укус питона 🐍

👩‍💻 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


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

Работает с любыми итерируемыми объектами

Читать полностью…

🐍 Укус питона 🐍

Что выведет следующий код?

Читать полностью…
Subscribe to a channel