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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Метод dict.get() в Python используется для получения значения по ключу из словаря. Он принимает ключ в качестве аргумента и возвращает соответствующее значение. В случае, если ключ отсутствует в словаре, метод возвращает значение по умолчанию, которое можно указать вторым аргументом.

➡️Пример получения значения по ключу:
data = {"name": "Иван", "age": 30}
name = data.get("name") — «Иван»
age = data.get("age", 25) — 30 (ключ есть, берём его значение)
print(name, age) — вывод: «Иван» 30.


➡️Использование значения по умолчанию:
data = {"name": "Анна"}
Ключа "city" нет, поэтому вернётся значение по умолчанию
city = data.get("city", "Не указан") — «Не указан»
print(city) — вывод: «Не указан».


➡️Работа с вложенными словарями:
data = { "user": { "name": "Павел", "email": "example.com" } }
email = data.get("user", {}).get("email", "Email отсутствует") — «example.com»
phone = data.get("user", {}).get("phone", "Телефон не указан") — «Телефон не указан».


💡Метод dict.get() удобен в тех случаях, когда нужно получить значение из словаря и быть уверенным, что при отсутствии ключа программа не будет выдавать ошибку. Он также позволяет удобно установить значение по умолчанию, если ключ не найден.

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥2
✈️attrs — библиотека для создания классов с автоматической реализацией методов __init__ и других. Главная функция -
автоматически генерирует стандартные методы Python-классов через декларативный синтаксис, сохраняя контроль над типами и валидацией.


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

@attr.s
class Cat:
name: str = attr.ib() # обязательное поле
age: int = attr.ib(default=1) # с значением по умолчанию
is_fluffy: bool = attr.ib(default=True) # и ещё одно

murzik = Cat(name="Мурзик", age=3)
print(murzik) # Выведет: Cat(name='Мурзик', age=3, is_fluffy=True)


💡Заключение:
attrs — даёт скорость разработки + безопасность типов. Совместимость с mypy и IDE (подсказки типов работают из коробки).

🐍Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥2
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