Ghostly Python
9.04K subscribers
535 photos
24 videos
599 links
Погружаемся в мир Python: задачи, фишки, библиотеки и террабайты полезного материала.

Сотрудничество: @heywan_n1

Цены: @heywan_media

Реклама на бирже: https://telega.in/c/+IOa15XDNbxRkYzNi
Download Telegram
👩‍💻 Простой мониторинг доступности сайта (healthcheck) на Python

Установи requests: pip install requests
Укажи URL сервиса, интервал проверки — и запускай скрипт.
Скрипт каждые N секунд шлёт GET и пишет статус (OK / FALLING). Можно использовать как простой аптайм-монитор

import time
import requests

URL = "https://example.com
" # что мониторим
INTERVAL = 10 # сек между проверками

def check():
try:
r = requests.get(URL, timeout=5)
if r.status_code == 200:
print("OK:", URL, r.status_code)
else:
print("WARNING:", URL, r.status_code)
except Exception as e:
print("DOWN:", URL, "->", e)

while True:
check()
time.sleep(INTERVAL)


💬 Как это работает:
— requests.get(URL, timeout=5) проверяет, отвечает ли сервис и не висит ли.
— status_code != 200 или Exception → считаем, что сервис нестабилен.
— INTERVAL регулирует частоту опроса (не ставь слишком низко, чтобы не ддосить сам себя).


🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76
👩‍💻 Изучаем Python: модуль pathlib для начинающих с домашним заданием

Показываю, как отказаться от ручной возни со строками и начать работать с путями по-питонячьи: через объекты, методы и оператор /. Чисто, удобно и без ошибок.

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
5
КАК СОЗДАТЬ КЛАССЫ

Это можно сделать двумя способами.

🔹Первый и распространенный – использование ключевого слова class, как показано в примере с классом Person, который имеет инициализатор и метод say_hello.


class Person:
def __init__(self, name):
self.name = name

def say_hello(self):
return f"Привет, я {self.name}!"

p = Person("Соня")
print(p.say_hello()) # Привет, я Соня!


🔹Второй метод – динамическое создание класса с помощью функции type().

Это позволяет формировать классы быстро, передавая type() имя класса, базовые классы (кортеж) и словарь с атрибутами (методами и переменными класса).

Person = type("Person", (object,), {
"__init__": lambda self, name: setattr(self, "name", name),
"say_hello": lambda self: f"Привет, я {self.name}!"
})

p = Person("Соня")
print(p.say_hello()) # Привет, я Соня!


🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
13🤯8👎2🔥2🥰1
⚙️ littleutils — это компактная утилита для Python 3, предлагающая набор полезных функций-помощников.

💪 Её главные преимущества — минимализм и легкость, что делает её идеальной для небольших проектов или скриптов, где нет необходимости подключать громоздкие библиотеки.

Библиотека, актуальная версия которой 0.2.4 (июль 2024), занимает всего около 8 КБ. Она отлично подходит как легкий "инструментарий" для проектов с малой нагруззкой.

Установка проста: pip install littleutils.

🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5🤮52👀1
Это DDR 7?

🐍 Ghostly Python | #мемы
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣44😨8😱63🔥1
🐍 В Python объекты делятся на изменяемые (mutable) и неизменяемые (immutable).

Понимание этой разницы необходимо при работе с аргументами функций, проектировании 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.

🐍 Ghostly Python | #гайды
Please open Telegram to view this post
VIEW IN TELEGRAM
13💩10👏3😁3😱3
💯 Одна из самых полезных библиотек Python - hybridmethod.

Hybridmethod — это легкий декоратор, который упрощает использование синхронных и асинхронных методов в одном классе.

Он позволяет объявлять метод, который может быть вызван как в обычном, так и в asyns-контексте, исключая дублирование кода.

Плюсы использования:

🔹Поддерживает Python 3.x (версия 1.0.1).

🔹Имеет минимум зависимостей.

🔹 Идеально подходит для проектов, где требуется единый API для синхронного и асинхронного кода.

🔗Ссылка

🐍 Ghostly Python | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
6💘1
Arrow: Умная работа с датами и временем.

Arrow — это библиотека, призванная решить проблемы стандартного модуля datetime в Python.

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

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

# Создание и форматирование
utc = arrow.utcnow()
local = utc.to('USA/UFA')
print(local.humanize()) # "in a moment"


Установка:
pip install 
arrow


👉 Статья

🐍 Ghostly Python | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1🔥1😱1
✔️Pentest - скрипт автоматизации пентеста с ИИ.

🐍 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()


Идеален для тех, кто хочет сделать часть пентеста "умнее" и сократить ручную работу.

🔗 GitHub

🐍 Ghostly Python | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🤨54🔥3👍2👏1
👩‍💻 Библиотека jsonpath-ng.

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


👉 GitHub

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
6
📱 Фишка: contextlib — удобное создание контекстных менеджеров

Позволяет писать свои контекстные менеджеры без классов и магических методов __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 — при выходе из контекста.

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
Нашел для вас ИИшку, которая будет находить баги в коде.

DeepCode — это AI-инструмент для Python, способный находить сложные баги, недоступные обычным линтерам.

Он анализирует кодовую базу, предлагает интеллектуальные исправления и экономит время на ручном ревью.

DeepCode можно интегрировать в CI/CD: он автоматически проверяет каждое изменение, выявляя критические ошибки (например, утечки памяти, состояния гонки) до их попадания в продакшен.

Установка:
pip install deepcode
deepcode analyze --path ./my_project


👉 Ссылка


🐍 Ghostly Python |#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥1
🐍 Понятные логи в пайтон - Pretty Pie Log

Pretty Pie Log — это удобная Python-утилита, которая делает логи наглядными, визуализируя их в виде круговых диаграмм.

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

Это идеальный инструмент для оперативного анализа проблем, позволяющий с первого взгляда понять, что доминирует в потоке логов.

Установка:
pip install pretty-pie-log.


👉 Статья

🐍 Ghostly Python |#фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1🤝1
✔️ Pyrsistent — это Python-библиотека для работы с неизменяемыми данными, предотвращающая случайные модификации.

Она обеспечивает стабильность кода: при изменении объекта создается его новая версия, тогда как исходный остается нетронутым.

Например, при добавлении элемента в pvector (аналог списка) вы получаете новый список, а старый сохраняет первоначальное состояние.

Это минимизирует ошибки и особенно полезно в многозадачных или сложных проектах, где целостность данных критически важна.

👉 Ссылка

🐍 Ghostly Python |#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁1
🖼️ Библиотека: humanize

humanize — удобная библиотека для преобразования чисел, дат и размеров файлов в человеко-понятный вид. Особенно полезна для вывода информации пользователю.

ℹ️ Основные возможности:

🟢 Преобразование чисел и дат в читаемый формат.
🟢 Вывод размеров файлов в килобайтах, мегабайтах и т.д.
🟢 Отображение времени в стиле "2 часа назад".
🟢 Лёгкая интеграция в любые проекты.

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

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


➡️ Ссылка на документацию

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Pandera — мощный инструмент для валидации данных в Python.

Он обеспечивает проверку структуры и содержимого, выступая как дополнительный слой валидации поверх pandas DataFrame и других структур.

✔️ Это позволяет выявлять ошибки на ранних этапах обработки.

Основная задача Pandera — гарантировать соответствие данных ожидаемой схеме, охватывающей типы, диапазоны значений и бизнес-правила.

Установка:
pip install pandera


🐍 Ghostly Python |#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🐍 python-markdownify — удобный инструмент для конвертации сложной HTML-разметки в чистый и структурированный Markdown.

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

Библиотека легко устанавливается через pip и работает как из Python-кода, так и через командную строку. Она гибко настраивается, позволяя определять правила для тегов, форматировать заголовки, обрабатывать таблицы и изображения.

Это экономит массу времени, которое обычно тратится на работу с регулярными выражениями, и значительно упрощает обработку больших объемов текста.

🐍 Ghostly Python |#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
6
⌨️ Модуль CSV: быстрое создание таблиц

В этой статье рассказывают возможности модуля CSV — от простого чтения файлов до автоматического определения форматов и работы со сложными структурами данных.

На сайте можно найти, как легко импортировать и экспортировать табличные данные, обрабатывать большие объемы информации и избегать распространенных ошибок при работе с CSV.

👉 Статья

🐍 Ghostly Python |#полезное
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.
👇
Мэверик.
Ясность. Точность.
💩101👍1
⚡️ Python-магия: Ускорение парсинга в 60 раз без сложного asyncio

Синхронный парсинг 1000 ссылок занимает около 5 минут.

Переписывать код на чистое asyncio не нужно.

🔹Решение: используйте связку httpx и anyio. httpx поддерживает асинхронный режим, а anyio упрощает параллельные запросы.

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.

🐍 Ghostly Python |#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1