3 трюка с itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
Далее,
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
chain. Она позволяет "склеивать" несколько итерируемых элементов в один.Далее,
accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
combinations. Вторым аргументом можно задать длину этой самой комбинации.👍2
🔧 clean-text — инструмент, который приведёт ваш текст в порядок
Если вы работаете с текстами из соцсетей, форумов или комментариев, вы знаете, насколько они бывают неструктурированными и с лишними символами.
💬 Пример:
Входной текст:
После очистки:
📌 Подходит для препроцессинга текста в NLP проектах, чат-ботах и любых задачах, где важна читаемость и структура.
🔗 Документация: https://pypi.org/project/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️⃣ Тройные кавычки `'''` или `"""`
Хранится всё, как написано: и переносы строк, и пробелы. Удобно для текстов с форматированием.
Когда строка становится слишком длинной и тяжело читается — её стоит разбить. Вот три способа сделать это грамотно:
1️⃣ С косой чертой `/`
Позволяет продолжить строку на новой строке без ошибок, но нужно быть аккуратным с пробелами и переносами.
2️⃣ Скобки (круглые)
Самый "питоничный" способ — просто обернуть выражение в скобки. Строки объединяются автоматически, без
+.3️⃣ Тройные кавычки `'''` или `"""`
Хранится всё, как написано: и переносы строк, и пробелы. Удобно для текстов с форматированием.
🔥3👍2🤩2
🎯 Фокус со срезом: никаких ошибок из ничего
Срезы в Python — мощный инструмент для получения подмножеств из последовательностей: строк, списков, кортежей,
Но вот интересный момент: если сделать срез у пустой последовательности — ошибки не будет, просто вернётся снова пустая.
Полезно знать при работе с переменными, которые могут оказаться пустыми — код останется устойчивым. Удобная мелочь, а спасает от лишних проверок.
Срезы в 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
🧙♂️ eval() в Python vs ast.literal_eval()
Иногда нужно превратить строку в объект Python. Например:
⚠️ eval() опасен — он выполнит любой код, даже вредоносный.
✅ Безопасная альтернатива:
🔐 Используй, если работаешь с пользовательским вводом, конфигами или данными из файлов.
Иногда нужно превратить строку в объект Python. Например:
eval("{'key': 42}") # работает, но...⚠️ eval() опасен — он выполнит любой код, даже вредоносный.
✅ Безопасная альтернатива:
import ast
safe_dict = ast.literal_eval("{'key': 42}")
ast.literal_eval() понимает только литералы (dict, list, str, int и т.п.) — и ничего не испортит.🔐 Используй, если работаешь с пользовательским вводом, конфигами или данными из файлов.
Самоучитель Python
Как работает eval() в Python - особенности метода и примеры
Метод eval() анализирует выражение, переданное этому методу, и запускает выражение (код) Python внутри программы.
👍3
Библиотека captcha позволяет легко генерировать капчи — как текстовые изображения, так и аудио.
Что она умеет:
* Генерация капчи в виде изображения или аудиофайла.
* Настройка шрифтов, что полезно для борьбы с распознавателями текста (например, Tesseract).
* Возможность кастомизации под ваши нужды с помощью различных параметров.
Библиотека активно обновляется, так что проблем с ней не будет.
Важно: Не называйте файл
Установить:
⚙️
Что она умеет:
* Генерация капчи в виде изображения или аудиофайла.
* Настройка шрифтов, что полезно для борьбы с распознавателями текста (например, 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-м элементом перед первым, когда он указан.
Чем отличается reduce от map и filter?
reduce() не возвращает новый список, основанный на функции и итерационный, который мы передали. Вместо этого он возвращает одно значение.
Как работает reduce?
reduce() работает вызывая функцию |, которую мы передали для первых двух элементов последовательности. Результат, возвращаемый функцией |, используется в другом вызове функции вместе со следующим (в данном случае третьим) элементом.
Этот процесс повторяется до тех пор, пока мы не пройдем через все элементы последовательности.
Необязательный аргумент initial используется, когда он присутствует, в начале этого цикла с первым элементом в первом вызове функции. В некотором смысле элемент initial является 0-м элементом перед первым, когда он указан.
PrettyTable — удобный модуль для создания таблиц и вывода их в терминал или текстовые файлы.
Возможности:
-Настройка ширины столбцов, выравнивание текста и границы таблицы.
-Сортировка данных и выбор столбцов/строк для вывода.
-Чтение данных из CSV, HTML или базы данных.
-Вывод в ASCII или HTML форматах.
Возможности:
-Настройка ширины столбцов, выравнивание текста и границы таблицы.
-Сортировка данных и выбор столбцов/строк для вывода.
-Чтение данных из 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.
🔎 Почему стоит использовать 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 SQLAlchemyPyPI
SQLAlchemy
Database Abstraction Library
👍3
PyAutoGUI — Автоматизация действий на экране! 🤖
PyAutoGUI (https://pypi.org/project/PyAutoGUI/) — библиотека для автоматизации работы с мышью и клавиатурой. Если нужно автоматизировать интерфейсные действия, такие как клик, набор текста или движение мыши, то PyAutoGUI — ваш лучший друг
🔥 Почему стоит использовать PyAutoGUI?
* Автоматизация: программное управление мышью и клавиатурой, что открывает возможности для автоматизации различных задач.
* Детекция: с помощью PyAutoGUI можно делать скриншоты и находить элементы на экране по изображению.
* Кросс-платформенность: работает на Windows, macOS и Linux.
Как работает?
1. Двигаем мышь: легко перемещаем курсор в нужную точку.
2. Кликаем: автоматически выполняем клики в нужном месте.
3. Вводим текст: программно набираем текст на клавиатуре.
Пример:
🔍 Полезно для:
* Автоматизации рутинных задач (например, заполняя формы).
* Тестирования UI (можно автоматически взаимодействовать с интерфейсами).
* Создания ботов для выполнения простых действий.
Установка:
⚙️
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 pyautoguiPyPI
PyAutoGUI
PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks. For Windows, macOS, and Linux, on Python 3 and 2.
👍2
📂 Как получить список файлов в директории
Хочешь обработать все файлы в папке? Вместо ручного перечисления — автоматизируй!
Скомбинируй
⚙️ Итог:
Хочешь обработать все файлы в папке? Вместо ручного перечисления — автоматизируй!
Скомбинируй
os.listdir() и os.path.isfile(), чтобы получить только файлы, без папок и мусора.⚙️ Итог:
os.listdir() + os.path.isfile() — быстрый способ собрать все файлы в директории для анализа или загрузки.❤2👍2
ReadWriteMemory — это топовая библиотека, позволяющая легко читать/записывать в память любого процесса.
С её помощью можно, например, сделать читы для игры.
А если подрубить такие библиотеки, как imGui, то можно вывести и оверлей чита.
Либо сделать простой трейнер.
Ставится командой
Документация и примеры кода здесь.
С её помощью можно, например, сделать читы для игры.
А если подрубить такие библиотеки, как imGui, то можно вывести и оверлей чита.
Либо сделать простой трейнер.
Ставится командой
pip install ReadWriteMemoryДокументация и примеры кода здесь.
Быстро создаём SQLite-базу данных
Когда нужно протестировать идею или сделать лёгкое приложение, новички часто тратят время на настройку полноценной СУБД. Но в Python есть встроенная SQLite — это база данных, которая хранится в одном файле и не требует установки.
С помощью модуля sqlite3 можно создать базу, таблицу и вставить данные всего в несколько строк.
Когда нужно протестировать идею или сделать лёгкое приложение, новички часто тратят время на настройку полноценной СУБД. Но в Python есть встроенная SQLite — это база данных, которая хранится в одном файле и не требует установки.
С помощью модуля sqlite3 можно создать базу, таблицу и вставить данные всего в несколько строк.
👍2
🧩 partial — фиксируем аргументы у функции
Хочешь заранее задать часть аргументов функции? Используй
Она возвращает новую функцию, где некоторые параметры уже зафиксированы. Удобно для коллбеков, обработчиков и повторяющихся вызовов.
На примере(см. выше) функция partial используется для создания новой функции с фиксированными значениями аргументов. Она принимает функцию и задает некоторые аргументы заранее, которые станут постоянными для создаваемой функции.
Хочешь заранее задать часть аргументов функции? Используй
functools.partial.Она возвращает новую функцию, где некоторые параметры уже зафиксированы. Удобно для коллбеков, обработчиков и повторяющихся вызовов.
На примере(см. выше) функция partial используется для создания новой функции с фиксированными значениями аргументов. Она принимает функцию и задает некоторые аргументы заранее, которые станут постоянными для создаваемой функции.
👍2
📌 Добавляем типы в Python с аннотациями
Python — динамический, но никто не мешает сделать код понятнее с помощью аннотаций типов.
Они не меняют поведение программы, но помогают IDE и вам самим — меньше багов, больше ясности.
🔍 Итог:
Типизация в Python — это документация прямо в коде. Используйте подсказки типов, чтобы ловить ошибки ещё до запуска.
Python — динамический, но никто не мешает сделать код понятнее с помощью аннотаций типов.
Они не меняют поведение программы, но помогают IDE и вам самим — меньше багов, больше ясности.
🔍 Итог:
Типизация в Python — это документация прямо в коде. Используйте подсказки типов, чтобы ловить ошибки ещё до запуска.
👍2