littleutils — это компактная утилита для Python 3, предлагающая набор полезных функций-помощников.Библиотека, актуальная версия которой 0.2.4 (июль 2024), занимает всего около 8 КБ. Она отлично подходит как легкий "инструментарий" для проектов с малой нагруззкой.
Установка проста:
pip install littleutils.Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5🤮5❤2👀1
Понимание этой разницы необходимо при работе с аргументами функций, проектировании API и использовании изменяемых объектов как ключей в словарях.
Изменяемые объекты: Oни могут быть изменены после создания. Например, при передаче списка (list) в функцию, любые изменения внутри функции повлияют на исходный список:
def add_item(lst):
lst.append(100)
my_list = [1, 2, 3]
add_item(my_list)
print(my_list) # [1, 2, 3, 100]
Примеры изменяемых типов:
list, dict, set.Неизменяемые объекты: Они не могут быть изменены после создания; любая операция, кажущаяся изменением, фактически создает новый объект. Если бы
my_list был кортежем (tuple), попытка изменения вызвала бы ошибку.Примеры неизменяемых типов:
int, float, str, tuple, frozenset.Please open Telegram to view this post
VIEW IN TELEGRAM
❤13💩10👏3😁3😱3
Hybridmethod — это легкий декоратор, который упрощает использование синхронных и асинхронных методов в одном классе.
Он позволяет объявлять метод, который может быть вызван как в обычном, так и в asyns-контексте, исключая дублирование кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6💘1
Arrow — это библиотека, призванная решить проблемы стандартного модуля
datetime в Python. Она предлагает интуитивно понятный API, упрощающий работу с датами и временем, избавляя от необходимости запоминать сложные парсеры строк или тонкости управления часовыми поясами.
Пример использования:
import arrow
# Создание и форматирование
utc = arrow.utcnow()
local = utc.to('USA/UFA')
print(local.humanize()) # "in a moment"
Установка:
pip install
arrow
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍1🔥1😱1
Pentest — это интерактивный Python-скрипт (Python 3.10+), использующий API LLM (например, Chat/OpenAI) для автоматизации процесса этичного хакинга. Он упрощает разведку и анализ уязвимостей, позволяя задавать вопросы, генерировать подсказки и управлять задачами через интерфейс, основанный на большой языковой модели.
brainstorm, run_scan, discuss_results). Пример кода:
from pentestgpt import PentestGPT
tool = PentestGPT(target="https://example.com")
tool.brainstorm()
tool.run_scan()
tool.discuss_results()
Идеален для тех, кто хочет сделать часть пентеста "умнее" и сократить ручную работу.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤨5❤4🔥3👍2👏1
jsonpath-ng — это Python-библиотека, предназначенная для парсинга и выполнения запросов JSONPath. Она позволяет извлекать данные из сложных, глубоко вложенных JSON-структур с помощью мощных выражений, включающих фильтры, срезы и рекурсивный поиск.
Пример:
from jsonpath_ng import jsonpath, parse
data = {
"users": [
{"name": "Alice", "age": 30, "tags": ["admin", "dev"]},
{"name": "Bob", "age": 20, "tags": ["dev"]},
{"name": "Carol", "age": 25, "tags": []},
]
}
# Все имена пользователей старше 21
expr = parse('$.users[?(@.age > 21)].name')
names = [match.value for match in expr.find(data)]
print(names) # ['Alice', 'Carol']
# Все теги всех пользователей (плоский список)
expr = parse('$.users[*].tags[*]')
tags = [m.value for m in expr.find(data)]
print(tags) # ['admin', 'dev', 'dev']
🔹 JSONPath обладает мощным синтаксисом, поддерживающим фильтры, рекурсию, срезы и подвыражения.🔹 Он возвращает совпадения вместе с их путями.🔹 Инструмент эффективно работает с любыми структурами на основе словарей и списков, такими как ответы API и конфигурационные файлы.
Установка:
pip install jsonpath-ng
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Позволяет писать свои контекстные менеджеры без классов и магических методов
__enter__ и __exit__. Полезно для управления ресурсами и автоматического закрытия файлов, соединений и т.п.from contextlib import contextmanager
@contextmanager
def open_file(path):
f = open(path, 'r')
try:
yield f
finally:
f.close()
with open_file("example.txt") as f:
print(f.read())
@contextmanager превращает функцию в контекстный менеджер.yield — выполняется при входе.yield — при выходе из контекста.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
DeepCode — это AI-инструмент для Python, способный находить сложные баги, недоступные обычным линтерам.
Он анализирует кодовую базу, предлагает интеллектуальные исправления и экономит время на ручном ревью.
DeepCode можно интегрировать в CI/CD: он автоматически проверяет каждое изменение, выявляя критические ошибки (например, утечки памяти, состояния гонки) до их попадания в продакшен.
Установка:
pip install deepcode
deepcode analyze --path ./my_project
👉 Ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥1
Она позволяет быстро определить соотношение различных типов сообщений (ошибок, предупреждений, информационных записей) в логах.
Это идеальный инструмент для оперативного анализа проблем, позволяющий с первого взгляда понять, что доминирует в потоке логов.
Установка:
pip install pretty-pie-log.
👉 Статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1🤝1
Она обеспечивает стабильность кода: при изменении объекта создается его новая версия, тогда как исходный остается нетронутым.
Например, при добавлении элемента в
pvector (аналог списка) вы получаете новый список, а старый сохраняет первоначальное состояние.Это минимизирует ошибки и особенно полезно в многозадачных или сложных проектах, где целостность данных критически важна.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁1
humanize — удобная библиотека для преобразования чисел, дат и размеров файлов в человеко-понятный вид. Особенно полезна для вывода информации пользователю.
import humanize
import datetime
print(humanize.intcomma(1234567)) # 1,234,567
size = 1536000
print(humanize.naturalsize(size)) # 1.5 MB
dt = datetime.datetime.now() - datetime.timedelta(hours=3)
print(humanize.naturaltime(dt)) # 3 hours ago
pip install humanize
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Pandera — мощный инструмент для валидации данных в Python.
Он обеспечивает проверку структуры и содержимого, выступая как дополнительный слой валидации поверх pandas DataFrame и других структур.
✔️ Это позволяет выявлять ошибки на ранних этапах обработки.
Основная задача Pandera — гарантировать соответствие данных ожидаемой схеме, охватывающей типы, диапазоны значений и бизнес-правила.
Установка:
🐍 Ghostly Python |#полезное
Он обеспечивает проверку структуры и содержимого, выступая как дополнительный слой валидации поверх pandas DataFrame и других структур.
Основная задача Pandera — гарантировать соответствие данных ожидаемой схеме, охватывающей типы, диапазоны значений и бизнес-правила.
Установка:
pip install pandera
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Идеален для парсинга и миграции сайтов, он избавляет от ручной обработки.
Библиотека легко устанавливается через pip и работает как из Python-кода, так и через командную строку. Она гибко настраивается, позволяя определять правила для тегов, форматировать заголовки, обрабатывать таблицы и изображения.
Это экономит массу времени, которое обычно тратится на работу с регулярными выражениями, и значительно упрощает обработку больших объемов текста.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
В этой статье рассказывают возможности модуля CSV — от простого чтения файлов до автоматического определения форматов и работы со сложными структурами данных.
На сайте можно найти, как легко импортировать и экспортировать табличные данные, обрабатывать большие объемы информации и избегать распространенных ошибок при работе с CSV.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
NZT существует.
В фильме «Области тьмы»
герой выпивает NZT — и за день
становится трейдером,
мастером кунг-фу и полиглотом.
Дело не в таблетке.
А в состоянии.
Химия не нужна.
Когда ум чист,
внимание собрано,
и сомнений нет —
ты уже на NZT.
Ты замечаешь всё.
Действуешь без разрывов.
И мир отвечает тебе.
Как включить режим NZT?
Подписывайся на Мэверика.
• входи в состояние
всё «получается само».
• мгновенно принимай
лучшие решения.
• считывай сложные связи
там, где все видят хаос.
• управляй фокусом
и вероятностями событий.
Твоя таблетка NZT.
👇
Мэверик.
Ясность. Точность.
ㅤ
В фильме «Области тьмы»
герой выпивает NZT — и за день
становится трейдером,
мастером кунг-фу и полиглотом.
Дело не в таблетке.
А в состоянии.
Химия не нужна.
Когда ум чист,
внимание собрано,
и сомнений нет —
ты уже на NZT.
Ты замечаешь всё.
Действуешь без разрывов.
И мир отвечает тебе.
Как включить режим NZT?
Подписывайся на Мэверика.
• входи в состояние
всё «получается само».
• мгновенно принимай
лучшие решения.
• считывай сложные связи
там, где все видят хаос.
• управляй фокусом
и вероятностями событий.
Твоя таблетка NZT.
👇
Мэверик.
Ясность. Точность.
ㅤ
💩10❤1👍1
Синхронный парсинг 1000 ссылок занимает около 5 минут.
Переписывать код на чистое asyncio не нужно.
httpx умеет работать с синхронным и асинхронным режимом, а anyio под капотом делает параллельные запросы максимально удобными.
import httpx
import anyio
import time
urls = [f"https://jsonplaceholder.typicode.com/posts/{i}" for i in range(1000)]
start_time = time.time()
async def fetch(client, url, limiter):
async with limiter:
await client.get(url)
async def main():
limiter = anyio.CapacityLimiter(100) # макс. 100 параллельных запросов
async with httpx.AsyncClient(timeout=30) as client:
async with anyio.create_task_group() as task_group:
for url in urls:
task_group.start_soon(fetch, client, url, limiter)
anyio.run(main)
print(f"{len(urls)} запросов выполнено за {time.time() - start_time:.2f} секунд")
💡 По факту: эти 1 000 запросов теперь обрабатываются в ~7.25 секунд, в то время, как с обычным request обработка заняла ~439.82 секунд.
Да, почти в 60 раз быстрее — без заморочек с asyncio, event loop и сложными конструкциями.
Используйте httpx.AsyncClient, устанавливайте адекватный таймаут и всегда ограничивайте параллелизм с помощью CapacityLimiter.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Хотите сделать свои Python-скрипты портативными? PyInstaller — ваше решение. Эта библиотека преобразует скрипты в самостоятельные исполняемые файлы, автоматически включая все необходимые зависимости.
Установка:
pip install pyinstaller.Для создания одного файла-приложения используйте команду
pyinstaller --onefile myscript.py. Это идеальный способ делиться вашими утилитами с теми, у кого не установлен Python, обеспечивая их бесперебойную работу.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4❤3🤝1
В чём разница между shallow copy и deep copy в Python?
Пример
import copy
original = [[1, 2], [3, 4]]
shallow = copy.copy(original)
deep = copy.deepcopy(original)
original[0][0] = 99
print(shallow) # ➔ [[99, 2], [3, 4]]
print(deep) # ➔ [[1, 2], [3, 4]]
Ответ
copy.copy() создаёт поверхностную копию объекта. Это значит, что сам объект копируется, но вложенные объекты продолжают ссылаться на те же данные.
copy.deepcopy() создаёт глубокую копию: копирует и сам объект, и все вложенные объекты, рекурсивно. В результате оригинал и копия полностью независимы.
🟢 Когда использовать:
copy() — если объект неглубокий и вложенные данные не будут изменяться.
deepcopy() — если нужно полностью изолировать копию от оригинала, включая всё содержимое.
❗️Важно: deepcopy может быть медленным на больших и вложенных структурах. Используйте осознанно.
📌 Подходит для работы со сложными структурами данных: списками списков, словарями, графами и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1