Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
3 трюка с itertools

Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один.

Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.

А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция combinations. Вторым аргументом можно задать длину этой самой комбинации.
👍2
🔧 clean-text — инструмент, который приведёт ваш текст в порядок

Если вы работаете с текстами из соцсетей, форумов или комментариев, вы знаете, насколько они бывают неструктурированными и с лишними символами. clean-text поможет быстро привести такой ввод к нормальной форме — всего одной строкой кода.

💬 Пример:
Входной текст:

A bunch of \\u2018new\\u2019 references, including [Moana](https://en.wikipedia.org/wiki/Moana_%282016_film%29).
»Yóù àré rïght <3!«


После очистки:

A bunch of 'new' references, including [moana](<URL>).
"you are right <3!"


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

🔗 Документация: https://pypi.org/project/clean-text/
Как удобно разбивать длинные строки в Python

Когда строка становится слишком длинной и тяжело читается — её стоит разбить. Вот три способа сделать это грамотно:

1️⃣ С косой чертой `/`
Позволяет продолжить строку на новой строке без ошибок, но нужно быть аккуратным с пробелами и переносами.

2️⃣ Скобки (круглые)
Самый "питоничный" способ — просто обернуть выражение в скобки. Строки объединяются автоматически, без +.

3️⃣ Тройные кавычки `'''` или `"""`
Хранится всё, как написано: и переносы строк, и пробелы. Удобно для текстов с форматированием.
🔥3👍2🤩2
🎯 Фокус со срезом: никаких ошибок из ничего

Срезы в Python — мощный инструмент для получения подмножеств из последовательностей: строк, списков, кортежей, range.

Но вот интересный момент: если сделать срез у пустой последовательности — ошибки не будет, просто вернётся снова пустая.

[][:5]      # → []
''[2:4] # → ''
()[::2] # → ()


Полезно знать при работе с переменными, которые могут оказаться пустыми — код останется устойчивым. Удобная мелочь, а спасает от лишних проверок.
🛡 try/except — ловим ошибки с умом

try/except — конструкция, без которой не обойтись, когда работаешь с внешними данными или непредсказуемыми действиями пользователя.

🔹 try — здесь выполняется код, который может "упасть"
🔹 except — если что-то пошло не так, переходим сюда
🔹 else — если ошибок не было, работаем дальше спокойно
🔹 finally — выполняется всегда, даже если был return или исключение

try:
num = int(input("Введите число: "))
except ValueError:
print("Это не число. Попробуйте снова.")
else:
print("Спасибо!")
finally:
print("Завершение операции.")


Надёжный способ держать код под контролем.
👍5
Proxy Checker

Чекер, разработанный на Python 3 для проверки прокси.

Получаемые данные:
- тип (HTTP, SOCKS4, SOCKS5)
- время ответа (в секундах)
- анонимность (анонимная или прозрачная)
- страна
- город
- код страны
🧙‍♂️ eval() в Python vs ast.literal_eval()

Иногда нужно превратить строку в объект Python. Например:

eval("{'key': 42}")  # работает, но...


⚠️ eval() опасен — он выполнит любой код, даже вредоносный.

✅ Безопасная альтернатива:

import ast
safe_dict = ast.literal_eval("{'key': 42}")


ast.literal_eval() понимает только литералы (dict, list, str, int и т.п.) — и ничего не испортит.

🔐 Используй, если работаешь с пользовательским вводом, конфигами или данными из файлов.
👍3
Библиотека captcha позволяет легко генерировать капчи — как текстовые изображения, так и аудио.

Что она умеет:

* Генерация капчи в виде изображения или аудиофайла.
* Настройка шрифтов, что полезно для борьбы с распознавателями текста (например, Tesseract).
* Возможность кастомизации под ваши нужды с помощью различных параметров.

Библиотека активно обновляется, так что проблем с ней не будет.

Важно: Не называйте файл captcha.py, иначе Python не поймет и выкинет ошибку.

Установить:
⚙️ pip install captcha
👍3
importlib.invalidate_caches() очищает кэш путей поиска модулей в Python. Это нужно, когда вы динамически добавляете или удаляете .py файлы, например, в тестах, плагинах или REPL-средах. В таких случаях Python может не увидеть изменения, пока не обновит свой кэш, и эта функция помогает решить эту проблему, заставляя систему пересканировать пути к модулям.

Зачем это нужно:

* В динамических средах, где модули могут появляться или исчезать на лету, важно, чтобы Python знал о новых модулях без перезапуска.
* Это полезно для корректной работы тестов, плагинов и при работе в интерактивных оболочках.

Пример использования:

import importlib
importlib.invalidate_caches()


Этот вызов гарантирует, что Python будет использовать актуальные версии модулей, если они были изменены или добавлены в процессе работы.
reduce() — функция, которая последовательно применяет функцию-аргумент к элементам списка и возвращает единое значение.

Чем отличается reduce от map и filter?

reduce() не возвращает новый список, основанный на функции и итерационный, который мы передали. Вместо этого он возвращает одно значение.

Как работает reduce?

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

Этот процесс повторяется до тех пор, пока мы не пройдем через все элементы последовательности.

Необязательный аргумент initial используется, когда он присутствует, в начале этого цикла с первым элементом в первом вызове функции. В некотором смысле элемент initial является 0-м элементом перед первым, когда он указан.
PrettyTable — удобный модуль для создания таблиц и вывода их в терминал или текстовые файлы.

Возможности:
-Настройка ширины столбцов, выравнивание текста и границы таблицы.

-Сортировка данных и выбор столбцов/строк для вывода.

-Чтение данных из CSV, HTML или базы данных.

-Вывод в ASCII или HTML форматах.
👍6
SQLAlchemy — как работать с базами данных без написания SQL запросов! 💾🔧

SQLAlchemy (https://pypi.org/project/SQLAlchemy/) — это мощный ORM (Object Relational Mapper) для Python, который позволяет взаимодействовать с базами данных, не пишя SQL запросы вручную.

Что делает SQLAlchemy уникальным?

* ORM: преобразует ваши классы Python в таблицы базы данных.
* Миграции: автоматически обновляет структуру базы данных в зависимости от изменений в модели.
* Сложные запросы: с помощью выражений SQLAlchemy можно легко составлять сложные SQL-запросы, не выходя за пределы Python-кода.

📚 Пример использования:

1. Создаем модель — класс, который будет отражать таблицу в базе данных.
2. Работаем с данными — создаем, читаем, обновляем и удаляем записи через объекты Python.

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# Настроим базу данных
Base = declarative_base()
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()

# Модель для таблицы
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)

# Создадим таблицу
Base.metadata.create_all(engine)

# Добавим нового пользователя
new_user = User(name='Alice', age=28)
session.add(new_user)
session.commit()

# Запросим данные
user = session.query(User).filter_by(name='Alice').first()
print(user.name, user.age)


🔎 Почему стоит использовать SQLAlchemy?

* Не нужно писать SQL вручную.
* Легко работать с большими проектами.
* Отличная документация и активное сообщество.

Установка:
⚙️ pip install SQLAlchemy
👍3
PyAutoGUI — Автоматизация действий на экране! 🤖

PyAutoGUI (https://pypi.org/project/PyAutoGUI/) — библиотека для автоматизации работы с мышью и клавиатурой. Если нужно автоматизировать интерфейсные действия, такие как клик, набор текста или движение мыши, то PyAutoGUI — ваш лучший друг

🔥 Почему стоит использовать PyAutoGUI?

* Автоматизация: программное управление мышью и клавиатурой, что открывает возможности для автоматизации различных задач.
* Детекция: с помощью PyAutoGUI можно делать скриншоты и находить элементы на экране по изображению.
* Кросс-платформенность: работает на Windows, macOS и Linux.

Как работает?

1. Двигаем мышь: легко перемещаем курсор в нужную точку.
2. Кликаем: автоматически выполняем клики в нужном месте.
3. Вводим текст: программно набираем текст на клавиатуре.

Пример:

import pyautogui

# Перемещение мыши
pyautogui.moveTo(100, 200)

# Клик
pyautogui.click()

# Набор текста
pyautogui.typewrite("Привет, мир!")


🔍 Полезно для:

* Автоматизации рутинных задач (например, заполняя формы).
* Тестирования UI (можно автоматически взаимодействовать с интерфейсами).
* Создания ботов для выполнения простых действий.

Установка:
⚙️ pip install pyautogui
👍2
📦 Преобразуем данные в JSON в Python

Нужно передать словарь через API или сохранить структуру в файл? Не изобретай велосипед — используй json.dumps().

Этот метод из модуля json превращает Python-объекты в JSON-строки за секунду.

🛠 Итог:
Для сериализации — json.dumps(). Просто, понятно, надёжно.
📂 Как получить список файлов в директории

Хочешь обработать все файлы в папке? Вместо ручного перечисления — автоматизируй!

Скомбинируй os.listdir() и os.path.isfile(), чтобы получить только файлы, без папок и мусора.

⚙️ Итог:
os.listdir() + os.path.isfile() — быстрый способ собрать все файлы в директории для анализа или загрузки.
❤2👍2
📏 Как узнать размер файла в Python

Нужно проверить «вес» файла перед загрузкой или для логов? Используй os.path.getsize() — и получай размер в байтах за одну строчку.

📊 Итог:
os.path.getsize(path) — простой способ узнать размер файла. Полезно для валидации, отчётов и контроля ограничений.
ReadWriteMemory — это топовая библиотека, позволяющая легко читать/записывать в память любого процесса.

С её помощью можно, например, сделать читы для игры.
А если подрубить такие библиотеки, как imGui, то можно вывести и оверлей чита.
Либо сделать простой трейнер.

Ставится командой pip install ReadWriteMemory
Документация и примеры кода здесь.
Быстро создаём SQLite-базу данных

Когда нужно протестировать идею или сделать лёгкое приложение, новички часто тратят время на настройку полноценной СУБД. Но в Python есть встроенная SQLite — это база данных, которая хранится в одном файле и не требует установки.

С помощью модуля sqlite3 можно создать базу, таблицу и вставить данные всего в несколько строк.
👍2
🧩 partial — фиксируем аргументы у функции

Хочешь заранее задать часть аргументов функции? Используй functools.partial.

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

На примере(см. выше) функция partial используется для создания новой функции с фиксированными значениями аргументов. Она принимает функцию и задает некоторые аргументы заранее, которые станут постоянными для создаваемой функции.
👍2
📌 Добавляем типы в Python с аннотациями

Python — динамический, но никто не мешает сделать код понятнее с помощью аннотаций типов.

Они не меняют поведение программы, но помогают IDE и вам самим — меньше багов, больше ясности.

🔍 Итог:
Типизация в Python — это документация прямо в коде. Используйте подсказки типов, чтобы ловить ошибки ещё до запуска.
👍2
📊 rich — красиво выводим в консоль

Обычный print() скучный? Библиотека rich превращает консоль в шоу: цветной текст, таблицы, прогресс-бары и даже Markdown.

from rich import print

print("[bold green]Hello, [underline]Python[/] world![/]")


rich — отличный инструмент для визуализации логов, отладки и CLI-интерфейсов. Красиво и понятно.