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

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

Цены: @heywan_media

Реклама на бирже: https://telega.in/c/+IOa15XDNbxRkYzNi
Download Telegram
Вопрос с собеса

Почему этот код «портит» все строки матрицы одновременно?

Пример🔽
m = [[0]*3]*3     # одна и та же строка повторена 3 раза
m[0][1] = 1
print(m) # ➔ [[0, 1, 0], [0, 1, 0], [0, 1, 0]]


Ответ🔽
Оператор * дублирует ссылку на один и тот же внутренний список, а не создаёт новые. Поэтому изменение m[0][1] меняет ту же самую строку во всех местах.

Правильно создавать независимые строки:

m = [[0]*3 for _ in range(3)] # новая строка на каждой итерации


🟢 Запомнить:

[x]*n безопасно для немутируемых значений (int, str, tuple), но не для вложенных списков.

Для копии строки используйте row[:] или row.copy().

Для глубокой копии вложенных структур — copy.deepcopy.


🐍 Ghostly Python | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
12
👩‍💻 Асинхронность vs. многопоточность: что выживет в эпоху No GIL?

Тестируем реальные сценарии, измеряем RPS, смотрим на потребление памяти и разбираемся, когда самая разумная стратегия — это просто подождать и обновить Python на free-threading версию.

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

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤔2
🖼️ Библиотека: httpx

httpx — современный HTTP-клиент для Python с синхронным и асинхронным API, поддержкой HTTP/2, стриминга и удобными таймаутами. Подходит для сервисов, ботов и интеграций, где важны скорость и контроль соединений.

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

🟢 Единый интерфейс для sync/async клиентов
🟢 HTTP/1.1 и HTTP/2, пул соединений, куки, прокси
🟢 Гибкие таймауты, стриминг запросов/ответов, загрузка файлов
🟢 Совместим с requests по духу, но современнее и быстрее в async


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

import asyncio
import httpx

async def main():
async with httpx.AsyncClient(http2=True, timeout=httpx.Timeout(5.0)) as client:
# GET с проверкой статуса
r = await client.get("https://api.github.com/repos/encode/httpx")
r.raise_for_status()
data = r.json()
print(f"{data['full_name']} ⭐️ {data['stargazers_count']}")
# POST JSON
echo = await client.post("https://httpbin.org/post", json={"ping": "pong"})
print(echo.json()["json"]) # {'ping': 'pong'}

if __name__ == "__main__":
asyncio.run(main())


✔️ Установка:

pip install httpx


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

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Please open Telegram to view this post
VIEW IN TELEGRAM
🤨24😁21👻4🤔1
➡️ Practical Python Programming — бесплатный курс по современному Python от Дэвида Бизли

Курс охватывает основы и «рабочие» приёмы: типы данных, функции, итераторы/генераторы, файлы, исключения, ООП, модули и работа с пакетами — с упором на практику и рефакторинг.

Материал состоит из коротких уроков и лабораторных с пошаговыми заданиями и решениями; всё можно запускать локально, без сложной подготовки окружения.


⛓️ Ссылка на ресурс

🐍 Ghostly Python | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
4
👩‍💻 Как я построил RAG-систему за вечер с помощью 5 open source-инструментов

Пошаговое руководство от Python for Devs: как связать MarkItDown, LangChain, ChromaDB, Ollama и Gradio, чтобы собрать полноценную RAG-систему без облаков и создать умную базу знаний у себя на ПК.

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

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61
📱 Фишка: types.MappingProxyType — «только чтение» для словаря

MappingProxyType создаёт неизменяемое представление существующего словаря: читать можно, писать — нельзя. Удобно, когда нужно отдать конфиг/истину в нескольких местах без риска случайной записи.

from types import MappingProxyType

settings = {"debug": True, "port": 8000}
readonly = MappingProxyType(settings)

print(readonly["port"]) # ➔ 8000
# readonly["port"] = 9000 # ➔ TypeError: 'mappingproxy' object does not support item assignment

# Изменили оригинал — прокси «увидит» это
settings["port"] = 9000
print(readonly["port"]) # ➔ 9000


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

🟢 Прокси динамический: отражает изменения исходного словаря, но сам не даёт записывать.
🟢 Отлично для публичных API/конфигов: передаём «только чтение», чтобы защититься от случайных правок.
🟢 Нужна полная неизменяемость? Делайте копии и замораживайте структуру (например, не вложенные dict, а кортежи/frozenset)

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39🤔7🤣5👏1
🐍 PYTHON 3.15 - ЧТО НОВОГО?

⚙️ Основные изменения:

• Введён новый модуль profiling.sampling - инструмент для статистического профилирования, который позволяет анализировать производительность кода без задержек и дополнительных затрат ресурсов.

• Стандартная библиотека была оптимизирована: многие функции теперь работают быстрее.
• Улучшены механизмы сборки мусора и управления памятью.
• Расширена поддержка аннотаций типов.
• Повышена стабильность работы интерпретатора при многопоточном выполнении.

Почему стоит обновиться:

• Новый профайлер поможет выявлять узкие места в коде без необходимости останавливать приложение.
• Версия стабильна и подходит для использования в продакшене.
• Снижены задержки и накладные расходы, улучшена работа с асинхронным кодом и большими объемами данных.

➡️ статья

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯18🤣6😁5👍1🤔1
📔 6 ФИШЕК ДЛЯ РАБОТЫ С JOURNALCTL.

journalctlэто мощный инструмент для систем на базе systemd. Вот несколько практичных советов.

🔘Просмотр последних записей и «подписка» на новые:

journalctl -f


Это аналог команды tail -f, но для системного журнала. Круто, когда вы отлаживаете службу и хотите следить за новыми записями в реальном времени.

🔘 Фильтрация по конкретному сервису:

journalctl -u nginx.service -f


Удобно, если проблема связана с определённым демоном. Вместо nginx просто укажите нужный сервис (например, aiogram_bot.service, sshd.service и т.д.).

🔘 Получение логов за последний час / день / определённый промежуток времени:

journalctl --since "1 hour ago"
journalctl --since "2025-10-01" --until "2025-10-02 03:00"


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

🔘 Фильтрация по уровням логов (ТОЛЬКО ОШИБКИ):

journalctl -p err..emerg


Эта команда покажет только серьёзные сообщения (ошибки, критические, предупреждения и экстренные). Особенно полезно, когда логи «шумные».

🔘 Просмотр логов по конкретному PID / пользователю / cgroup:

journalctl _PID=12345
journalctl _UID=1000
journalctl _SYSTEMD_UNIT=nginx.service


Метаданные systemd позволяют удобно фильтровать информацию.


🔘 Форматирование: удобочитаемый вывод против JSON:

journalctl -o short-iso    # для удобных временных меток
journalctl -o json-pretty # для автоматического парсинга и анализа


Если вам нужно автоматизировать обработку логов, используйте вывод в формате JSON.

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64😁3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91🤨1
👩‍💻 Простой мониторинг доступности сайта (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