🧙♂️ 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
📊 rich — красиво выводим в консоль
Обычный
Обычный
print() скучный? Библиотека rich превращает консоль в шоу: цветной текст, таблицы, прогресс-бары и даже Markdown.from rich import print
print("[bold green]Hello, [underline]Python[/] world![/]")
rich — отличный инструмент для визуализации логов, отладки и CLI-интерфейсов. Красиво и понятно.📦 python-dotenv — храним переменные окружения в .env
Устал вручную прописывать переменные окружения?
🔐 Итог:
Устал вручную прописывать переменные окружения?
python-dotenv загружает их из .env файла автоматически.from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("API_KEY")
🔐 Итог:
python-dotenv — удобно и безопасно: храните секреты в .env, а не в коде.👍2
🧹 Удаляем лишнее из списка: list comprehensions + условие
Нужно быстро отфильтровать список? Вместо громоздких циклов используй list comprehension с условием.
🧼 Итог:
List comprehension — лаконичный способ чистить и преобразовывать данные.
Нужно быстро отфильтровать список? Вместо громоздких циклов используй list comprehension с условием.
data = [1, 2, None, 4, None, 5]
clean = [x for x in data if x is not None]
🧼 Итог:
List comprehension — лаконичный способ чистить и преобразовывать данные.
❤1👎1
🕒 Измеряем время выполнения кода
Хочешь узнать, сколько выполняется блок кода? Используй
⏱ Итог:
Хочешь узнать, сколько выполняется блок кода? Используй
time.time() — просто и наглядно.import time
start = time.time()
# ваш код
time.sleep(1)
end = time.time()
print(f"Время выполнения: {end - start:.2f} сек.")
⏱ Итог:
time.time() — быстрый способ измерить производительность без сторонних библиотек.👍3
string.rsplit() — разбивает строку справа налево по указанному разделителю и возвращает список. Можно задать, сколько именно раз выполнять разбиение (по умолчанию — без ограничения).