Python Hub - сборище Питонистов
1.56K subscribers
613 photos
1 video
35 files
254 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Python Hub - сборище Питонистов
Photo
🔍 Разбор задачи

В Python аргументы по умолчанию вычисляются один раз при определении функции, а не при каждом вызове.


def func(x, y=[]):
y.append(x)
return y


Когда мы вызываем func(1) → список y создаётся один раз и сохраняется. В него добавляется 1. Результат: [1].
При вызове func(2) используется тот же самый список, в который уже добавлена 1. Теперь добавляется 2. Результат: [1, 2].
При вызове func(3, []) мы передаём новый пустой список вместо значения по умолчанию. В него добавляется 3. Результат: [3].
При вызове func(4) снова используется старый общий список, где уже [1, 2]. Добавляется 4. Результат: [1, 2, 4].

👉 Итог: код выведет
[1], [1, 2], [3], [1, 2, 4]
2🤔2🎄1
Python Hub - сборище Питонистов
Photo
👋 Разбор кода по шагам

s = "python"

1. s[1:5:2]

Формат среза: [start:stop:step]
start = 1, stop = 5 (не включительно), step = 2
Берём символы с индексами 1 и 3:
s[1] = 'y'
s[3] = 'h'
Результат: 'yh'

2. s[::-1]

Шаг -1 → идём с конца к началу → переворачиваем строку полностью
'python' → 'nohtyp'
Результат: 'nohtyp'

3. s[::3]

Шаг 3, start и stop не указаны → берём от начала до конца, каждый 3-й символ
Индексы, которые берём: 0, 3
s[0] = 'p'
s[3] = 'h'

Результат: 'ph'

😨Итоговый вывод:

'yh', 'nohtyp', 'ph'


Совет подписчикам: внимательно проверяйте индексы при срезах и шагах — это частая ловушка!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🎙Познаем новые библиотеки

🚀 Memray — мощный профайлер памяти для Python от Bloomberg

Работаете с тяжёлыми Python-приложениями, где «утекает» память или внезапно проседает производительность?
На помощь приходит Memray — один из самых продвинутых инструментов для анализа использования памяти.

🔍 Что умеет Memray:
- Отслеживает каждую функцию и весь стек вызовов
- Видит не только Python-код, но и нативные вызовы C/C++
- Минимальные накладные расходы на профилирование
- Наглядные отчёты: flame graph, таблицы, деревья, live-мониторинг
- Поддержка Python-потоков и нативных потоков

🧩 Зачем использовать:
- Поиск утечек памяти
- Анализ «почему приложение ест больше, чем нужно»
- Поиск горячих точек по выделению памяти

Пример использования:
# Запускаем приложение под профайлером
python3 -m memray run -o output.bin my_script.py


# Строим flame graph
python3 -m memray flamegraph output.bin


👉 Результат — HTML-отчёт, который можно открыть в браузере.

📦 Установка:
pip install memray


⚠️(Работает на Linux и macOS, Python 3.7+)

https://github.com/bloomberg/memray

💡 Если у вас были «битвы» с утечками памяти — попробуйте Memray. Его уже используют в Bloomberg и крупных open-source проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Что выдаст код выше?
Anonymous Quiz
12%
[1, 9, 25]
11%
[2, 4]
66%
[4, 16]
11%
Не знаю
👍5
Python Hub - сборище Питонистов
Photo
Разбор 😨

Список nums = [1, 2, 3, 4, 5]

В генераторе [x**2 for x in nums if x % 2 == 0]:
берём только те x, которые делятся на 2 (чётные)
это 2 и 4
возводим их в квадрат: 2**2 = 4, 4**2 = 16

Результат: [4, 16]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83
🌍 Geopy — библиотека, которая превращает Python в навигатор

Когда мы открываем Яндекс.Карты, Google Maps или сервис доставки еды — за кулисами всегда работает геокодинг.
Приложение должно понять:

📍 где находится пользователь,
🚴‍♂️ как далеко курьер от адреса,
🏨 какие ближайшие отели или кафе показать.

👉 Всё это можно сделать прямо из Python с помощью библиотеки Geopy.


🔑 Что умеет Geopy:

🗺️ Геокодинг — превращает адрес в координаты
(«Москва, Красная площадь» → 55.7539, 37.6208)
🧭 Обратный геокодинг — по координатам даёт адрес
(55.7539, 37.6208 → «Красная площадь, Москва, Россия»)
📏 Расстояния — считает путь между точками (в км, милях, морских милях)
🌐 Поддержка разных сервисов: OpenStreetMap (Nominatim), Google, Яндекс, Bing, ArcGIS и др.


Давайте посмотрим на примеры:


from geopy.geocoders import Nominatim
from geopy.distance import geodesic

# Инициализация геокодера
geo = Nominatim(user_agent="geo_app")

# 1️⃣ Адрес → координаты
moscow = geo.geocode("Москва, Красная площадь")
print("Москва:", moscow.latitude, moscow.longitude)

# 2️⃣ Координаты → адрес
place = geo.reverse("55.7539, 37.6208")
print("Адрес:", place.address)

# 3️⃣ Расстояние Москва–СПб
p1 = (moscow.latitude, moscow.longitude)
p2 = (59.9343, 30.3351) # Санкт-Петербург
print("Расстояние:", geodesic(p1, p2).km, "км")


🔎 Результат:

Москва: 55.7539, 37.6208
Адрес: Красная площадь, Москва, Россия
Расстояние: ~634 км 🚄


🎯 Где пригодится Geopy:

🚕 Логистика: рассчитывать маршруты доставки
📊 Аналитика: строить тепловые карты заказов
🗺️ Travel-сервисы: находить ближайшие отели или достопримечательности
Стартапы: от «поиска ближайшей кофейни» до «глобального трекера велосипедов»


📦 Установка:


pip install geopy



💡 Geopy делает Python ближе к реальному миру.
С его помощью можно писать приложения, которые не просто что-то считают, а реально «понимают» где находится человек, бизнес или объект.
👍6
🆓 Бесплатный 🆓
CLI Ai Gemini может помочь вам написать код

👀Официальный вариант без взломов и обходов, рекомендую тем, кто еще не решился на подписку, но хочет юзать Ai для написания кода

p.s. лайкаем на ютубе, чтобы продвинуть, как обычно 😻

https://youtu.be/2Q0TX58gs1M
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1
Недавно я делал обзор на Gemini CLI, но в комментах увидел, что его можно по-человечески подключить к Kilo Code и использовать через нормальный UI чат

И все это !бесплатно! По 1к запросов в сутки🆓

Так что рекомендую к просмотру тем, кто кодит часто и много, но покупать курсор или еще что-то не намерен

Плагин для 👩‍💻👩‍💻 pycharm и vscode есть

https://youtu.be/q0fJwevyooU
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🚀 FastAPI — почему весь Python-сообщество влюбилось в этот фреймворк

Если ты когда-то писал API на Python — скорее всего, делал это на Flask или Django.
Но в 2018 году появился новый игрок — FastAPI, и с тех пор жизнь стала сильно проще 😎


FastAPI — это фреймворк для создания REST и GraphQL API на Python.
Его автор — Себастьян Рамирес, и главная идея простая:

Сделать веб-разработку в Python быстрой, понятной и удобной”


Под капотом — Starlette (отвечает за асинхронный веб-сервер) и Pydantic (валидация данных через типы).
То есть всё работает молниеносно и при этом не ломает мозг.

⚙️ Для чего он нужен

FastAPI идеально подходит, если тебе нужно:

писать быстрые микросервисы;
делать ботов с вебхуками;
оборачивать ML-модели в API;
или просто быстро поднять прототип.

Фреймворк отлично дружит с async/await, JSON, OAuth2, JWT, SQLAlchemy и прочими стандартными штуками.

🔥 НО почему он вдруг стал таким популярным?!

1. Скорость.
Работает почти как Node.js или Go — благодаря асинхронности и Starlette. (Ну да, помедленнее, но все же)

2. Типизация.
Всё основано на аннотациях Python. Указываешь типы — и FastAPI сам проверяет входные данные.

3. Документация “из коробки”.
Swagger и ReDoc появляются автоматически — без единой строчки лишнего кода. (Жирный плюс)

4. Простота.
Минимальный API можно написать за минуту:


from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def hello():
return {"message": "Привет, FastAPI!"}


Запуск на серваке:


uvicorn main:app --reload


🫥 Где уже реально используют FastAPI судя по источникам

▶️ Netflix — для внутренних API
▶️ Microsoft — в Azure ML
▶️ Uber — в аналитических сервисах
▶️ HuggingFace — для запуска ML-моделей

Да и в телеграм-ботах FastAPI часто используют для вебхуков — быстро, стабильно и без боли.

Если коротко резюмировать и тебе лень делать это самому
🤔

FastAPI — это как Flask, только современный, быстрый и с автоматической документацией.
Если хочешь писать чистый и предсказуемый бэкенд на Python — попробуй.
После него возвращаться к Flask уже не хочется 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41