Pythoner
6.96K subscribers
922 photos
27 videos
4 files
715 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
3👍2🔥2
Что выдаст код выше
Anonymous Quiz
49%
True
26%
False
15%
None
10%
Error
7👍2🔥1
🤔Разбор

Эквивалентно a is b and b is c. None - единственный объект, а, b, с на него ссылаются


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥2
✈️Библиотека для контроля нагрузки при выполнении асинхронных HTTP-запросов или любых других корутин. Позволяет ограничивать количество одновременных операций с гибкими настройками.

➡️Главная функция:
Ограничивает RPS (запросов в секунду) и количество одновременных соединений — защищает сервисы от перегрузки при парсинге или работе с API.

➡️Пример использования:
import aiometer
import httpx

async def fetch(url):
async with httpx.AsyncClient() as client:
return await client.get(url)

urls = [...] # Список URL
results = await aiometer.run_on_each(fetch, urls, max_per_second=5)


🖥GitHub

💡Полезно
Интеграция с asyncio и anyio + поддержка кастомных лимитеров. Замена самописным «костылям» с семафорами.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥3
✈️DockerPyze – удобная библиотека для работы с Docker из Python. DockerPyze позволяет управлять Docker-контейнерами прямо из Python-кода — запускать, останавливать и проверять их статус без сложных команд.

➡️Зачем нужно:
Чтобы автоматизировать работу с Docker через простые Python-скрипты вместо ручных команд в терминале.

➡️Пример использования:
from dockerpyze import DockerClient

# Подключаемся к Docker
docker = DockerClient()

# Получаем список всех контейнеров
containers = docker.list_containers()
print(f"Запущено контейнеров: {len(containers)}")


🖥 GitHub

💡Заключение
- Работает со всем, что умеет Docker.
- Команды как в Python — понятные и читаемые.
- Не нужно самому разбирать ошибки — библиотека сделает это за вас.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
✈️Бинарный поиск - это эффективный алгоритм поиска элемента в упорядоченном списке данных.

➡️Бинарный поиск основан на принципе "разделяй и властвуй". Он работает следующим образом: сначала мы определяем середину списка и сравниваем искомый элемент с этой серединой. Если элемент равен середине, то поиск завершается успешно. Если элемент меньше середины, то мы продолжаем поиск в левой половине списка. Если элемент больше середины, то мы продолжаем поиск в правой половине списка. Повторяем эти шаги до тех пор, пока не найдем искомый элемент или пока список не будет пустым.

➡️Вот пример реализации бинарного поиска на языке Python:

def binary_search(arr, target):
left = 0
right = len(arr) - 1

while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1

return -1

# Пример использования
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
result = binary_search(arr, target)
if result != -1:
print("Элемент найден в позиции", result)
else:
print("Элемент не найден")


➡️Преимущества бинарного поиска

Бинарный поиск обладает несколькими преимуществами по сравнению с другими алгоритмами поиска. Во-первых, он имеет временную сложность O(log n), что делает его очень эффективным даже для больших списков данных. Во-вторых, он работает только с упорядоченными списками, что позволяет сократить количество операций поиска. И, наконец, бинарный поиск является универсальным и может быть применен для поиска элементов в любом упорядоченном списке данных.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍641🔥1🤔1
✈️glom – это библиотека для обработки и трансформации данных в Python. Она помогает легко извлекать, преобразовывать и структурировать сложные данные, такие как JSON или вложенные словари.

➡️ Ключевая функция:
Позволяет работать с глубоко вложенными структурами данных через простой и читаемый синтаксис, заменяя многострочные операции цепочками .get() или вложенными циклами.

➡️Пример использования:
from glom import glom

data = {'a': {'b': {'c': 'Hello, glom!'}}}
result = glom(data, 'a.b.c') # Достаём значение по цепочке ключей
print(result) # Вывод: 'Hello, glom!'


🖥GitHub

💡Главный плюс:
Уменьшает сложность кода при работе с глубоко вложенными структурами, делая его чище и удобнее для поддержки.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥2
✈️В Python деструкторы — это специальные методы, которые вызываются, когда объект собирается с мусором (т.е., когда он больше не нужен и память, занимаемая объектом, освобождается). Деструкторы позволяют выполнить некоторые завершающие действия перед уничтожением объекта, например, освободить ресурсы или завершить соединения.

➡️Применение деструкторов ограничено в связи с наличием сборщика мусора. Их стоит использовать только когда нужно правильно освободить внешние ресурсы, например файлы.

➡️Вот пример класса с деструктором:
class MyClass:
def __init__(self, name):
self.name = name
print(f"Объект {self.name} создан.")

def __del__(self):
print(f"Объект {self.name} уничтожен.")

# Создаем объект класса
obj = MyClass("TestObject")

# Удаляем объект
del obj

# Если вы хотите избежать автоматического освобождения памяти,
# можете использовать осмысленное завершение программы, например:
import time
time.sleep(1) # daем немного времени, чтобы увидеть сообщение деструктора

⬆️В этом примере создается объект MyClass, после чего его деструктор будет вызван при удалении объекта с помощью команды del obj. Таким образом, в консоль будет выведено сообщение о создании объекта, а затем сообщение о его уничтожении.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63👍2
✈️EasyOCR – это библиотека на Python, которая позволяет легко извлекать текст из изображений и PDF. Она поддерживает более 80 языков и идеально подходит для автоматизации обработки документов.

➡️Основная задача:
Распознавание текста на изображениях с высокой точностью, даже в сложных условиях (разные шрифты, низкое качество).

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

reader = easyocr.Reader(['ru', 'en']) # Выбираем языки (русский и английский)
result = reader.readtext('image.jpg') # Распознаём текст
print(result) # Выводим результат


🖥GitHub

💡Главный плюс:
Поддержка множества языков из коробки и простота интеграции в Python-проекты. Отлично подходит для задач автоматизации, анализа документов и обработки изображений.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥84👍4
✈️Сегодня поговорим о том, как создавать крутые CLI-приложения с помощью Click. Если вам надоело писать бесконечные if'ы для обработки аргументов командной строки, то этот пост определенно для вас!

➡️Начнем с того, почему вообще стоит использовать Click, а не встроенный argparse:
—Декораторный подход, который выглядит элегантно и интуитивно понятен
—Автоматическая генерация справки и сообщений об ошибках
—Вложенные команды из коробки
—Поддержка автодополнения в shell

➡️Давайте посмотрим на простой, но реальный пример. Представим, что мы делаем утилиту для работы с файлами:
import click

@click.group()
def cli():
"""Утилита для работы с файлами"""
pass

@cli.command()
@click.argument('path')
@click.option('--lines', '-l', is_flag=True, help='Показать количество строк')
def analyze(path, lines):
"""Анализирует файл и выводит статистику"""
try:
with open(path) as f:
content = f.readlines()
if lines:
click.echo(f'Количество строк: {len(content)}')
except FileNotFoundError:
click.secho('Файл не найден! 😱', fg='red')

if __name__ == '__main__':
cli()


Крутая штука в Click – это то, как легко добавлять новые команды. Хотите добавить подкоманду? Просто навешиваете еще один декоратор!

➡️А теперь лайфхак, который многие упускают: Click умеет создавать красивые прогресс-бары:
@cli.command()
@click.argument('path')
def process(path):
"""Обрабатывает файлы с прогресс-баром"""
files = os.listdir(path)
with click.progressbar(files, label='Обработка файлов') as bar:
for f in bar:
# что-то делаем с файлом
time.sleep(0.1)


➡️Про что еще стоит знать?

Click отлично работает с цветным выводом. Хотите привлечь внимание пользователя? Используйте click.secho():
click.secho('Внимание! 🚨', fg='yellow', bold=True)
click.secho('Ошибка! ', fg='red')
click.secho('Успех! ', fg='green')


➡️И напоследок, трюк – создание интерактивных подтверждений:
if click.confirm('Уверены, что хотите удалить все файлы? 🤔'):
click.echo('Поехали! 🚀')


📂Документация

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥43
✈️Практическое руководство по реализации современных языковых моделей (включая GPT) на чистом Python и PyTorch. Идеально для изучения архитектуры LLM без использования готовых библиотек.

➡️Главная задача:
Понять внутреннее устройство трансформеров и механизмов self-attention через построение моделей поэтапно — от токенизации до генерации текста.

➡️Установка (клонирование репозитория):
git clone https://github.com/rasbt/LLMs-from-scratch.git
cd LLMs-from-scratch
pip install -r requirements.txt


➡️Упрощенный пример для наглядности:
from src.model import GPT
# Создание экземпляра модели
model = GPT(vocab_size=10000, n_heads=8, n_layers=6)
# Обучение модели
model.train(text_data, epochs=10)


🖥GitHub

💡Основной плюс:
Полная прозрачность реализации — каждый компонент (positional encoding, multi-head attention) написан вручную с пояснениями в Jupyter-ноутбуках.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥2
✈️Keyring – библиотека для работы с системным хранилищем учетных данных (Keychain, KWallet, Secret Service). Позволяет безопасно хранить и получать пароли, используя механизмы защиты ОС.

➡️Главная задача:
Устраняет необходимость хранения паролей в конфигах или коде, используя защищенные системные хранилища.

➡️Пример использования:
import keyring
# Сохранение
keyring.set_password("my_app", "username", "secret123")
# Получение
password = keyring.get_password("my_app", "username")


🖥GitHub

💡Ключевое преимущество:
Кроссплатформенная работа с нативными хранилищами (Windows Credential Locker, macOS Keychain, Linux Secret Service) без привязки к конкретной ОС.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥2
✈️pdoc – автоматически создаёт чистую и современную документацию из docstring и аннотаций типов Python. Альтернатива Sphinx с фокусом на простоту и читаемость. pdoc превращает docstring и type hints в интерактивную документацию без сложных конфигов.

➡️Пример использования:
# Генерация документации для модуля
pdoc ./my_module --output-dir ./docs


🖥GitHub

💡Плюсы:
Поддержка type hints и математических формул в Markdown из коробки.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
✈️Популярный Python-инструмент для скачивания видео, аудио и изображений с 1000+ сайтов (YouTube, Twitter, Bilibili и др.). Работает напрямую через командную строку без API-ключей.

➡️Пример использования:
# Скачать видео/аудио по ссылке (автоопределение качества)
you-get https://www.youtube.com/watch?v=dQWgXcQ

# Показать доступные форматы без скачивания
you-get --info https://vimeo.com/1236789

# Скачать конкретный формат (по itag)
you-get --itag=137 https://youtu.be/VIDEO_ID # 4K
you-get --itag=140 https://youtu.be/VIDEO_ID # Аудио 128kbps


💡Хотите выбрать качество? Добавьте --info к команде, чтобы увидеть доступные варианты перед загрузкой.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥42
✈️Модуль filecmp — это стандартная библиотека Python для быстрого сравнения файлов и папок “из коробки”,
без ручных циклов и чтения содержимого.

➡️Когда полезно?
- Проверка совпадения файлов при резервном копировании
- Сравнение директорий при деплое, тестировании, синхронизации
- Быстрый аудит изменений между двумя версиями данных

➡️Пример сравнения файлов:
import filecmp

print(filecmp.cmp('file1.txt', 'file2.txt')) # True, если содержимое идентично


➡️Пример сравнения директорий:
import filecmp

d = filecmp.dircmp('dirA', 'dirB')
d.report() # Сводный отчёт: что совпадает, что отличается


💡Плюсы:
- Сравнение по содержимому и метаданным
- Умеет работать рекурсивно с подпапками
- Не надо писать собственные “обходы” и проверки

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥43
✈️RealtimeSTT – это Python-библиотека для потокового распознавания речи с микрофона или аудиопотока. Идеально подходит для голосовых ассистентов, транскрипции и интерактивных приложений.

➡️Ключевая функция:
Мгновенная обработка аудиопотока с минимальной задержкой, поддержка нескольких движков распознавания, включая Whisper и Vosk.

➡️Пример использования:
from realtimestt import SpeechToText

stt = SpeechToText(engine="whisper")
for text in stt.stream_from_microphone():
print("Распознано:", text)


🖥GitHub

💡Главный плюс:
Гибкость интеграции с разными движками STT и минимальные задержки – ваш голос превращается в текст практически мгновенно.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥4
Forwarded from IT memer
Программирование через пару лет

😈 IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤣93😁2
✈️Maigret – это OSINT-инструмент, который автоматически собирает данные о профилях пользователя в интернете по заданному username, и помогает находить аккаунты пользователей по нику на сотнях сайтов, соцсетей и форумов.

➡️Пример использования:
maigret john_doe --site twitter github --timeout 10


🖥GitHub

💡Главный плюс:
Поддержка 700+ сайтов, гибкая настройка запросов и возможность сохранения результатов в удобном формате (JSON, HTML, CSV).

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3👍2
✈️Библиотека psutil (process and system utilities) — это кроссплатформенный инструмент для мониторинга системных ресурсов и управления процессами в Python.

➡️Она предоставляет простой интерфейс для получения информации о CPU, памяти, дисках, сети и запущенных процессах.

➡️Некоторые полезные функции:
- Мониторинг использования CPU
psutil.cpu_percent()

- Информация о дисковом пространстве
psutil.disk_usage('/')

- Информация об ОЗУ
psutil.virtual_memory()

- Данные о сетевой активности
psutil.net_io_counters()

- Управление процессами
psutil.process_iter()

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥2
✈️Оператор pass в Python, возможно, является одним из наиболее непонятных для новичков. Этот оператор не делает абсолютно ничего. Но почему же он тогда нужен?

➡️Плейсхолдер для будущего кода

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

➡️Минимальные классы и функции

Оператор pass может быть полезен при создании минимальных классов или функций. В Python, класс или функция не может быть пустой. Если вы попытаетесь создать пустой класс или функцию, интерпретатор вернет ошибку. Оператор pass позволяет обойти это ограничение.

➡️Управление потоком программы

Оператор pass также может быть использован для управления потоком программы. Иногда в условной конструкции if/elif/else или в цикле for/while может не быть необходимости выполнять какое-либо действие. В этих случаях можно использовать оператор pass для обозначения пустого блока.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥2🥰1