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", "Телефон не указан") — «Телефон не указан».Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
автоматически генерирует стандартные методы 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 (подсказки типов работают из коробки).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
❤7👍2🔥1
Эквивалентно a is b and b is c. None - единственный объект, а, b, с на него ссылаются
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4🔥2
Ограничивает 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)
Интеграция с asyncio и anyio + поддержка кастомных лимитеров. Замена самописным «костылям» с семафорами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥3
Чтобы автоматизировать работу с Docker через простые Python-скрипты вместо ручных команд в терминале.
from dockerpyze import DockerClient
# Подключаемся к Docker
docker = DockerClient()
# Получаем список всех контейнеров
containers = docker.list_containers()
print(f"Запущено контейнеров: {len(containers)}")
- Работает со всем, что умеет Docker.
- Команды как в Python — понятные и читаемые.
- Не нужно самому разбирать ошибки — библиотека сделает это за вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
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), что делает его очень эффективным даже для больших списков данных. Во-вторых, он работает только с упорядоченными списками, что позволяет сократить количество операций поиска. И, наконец, бинарный поиск является универсальным и может быть применен для поиска элементов в любом упорядоченном списке данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4⚡1🔥1🤔1
Позволяет работать с глубоко вложенными структурами данных через простой и читаемый синтаксис, заменяя многострочные операции цепочками
.get() или вложенными циклами.from glom import glom
data = {'a': {'b': {'c': 'Hello, glom!'}}}
result = glom(data, 'a.b.c') # Достаём значение по цепочке ключей
print(result) # Вывод: 'Hello, glom!'
Уменьшает сложность кода при работе с глубоко вложенными структурами, делая его чище и удобнее для поддержки.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2
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. Таким образом, в консоль будет выведено сообщение о создании объекта, а затем сообщение о его уничтожении. Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3👍2
Распознавание текста на изображениях с высокой точностью, даже в сложных условиях (разные шрифты, низкое качество).
import easyocr
reader = easyocr.Reader(['ru', 'en']) # Выбираем языки (русский и английский)
result = reader.readtext('image.jpg') # Распознаём текст
print(result) # Выводим результат
Поддержка множества языков из коробки и простота интеграции в Python-проекты. Отлично подходит для задач автоматизации, анализа документов и обработки изображений.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍4
—Декораторный подход, который выглядит элегантно и интуитивно понятен
—Автоматическая генерация справки и сообщений об ошибках
—Вложенные команды из коробки
—Поддержка автодополнения в 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 – это то, как легко добавлять новые команды. Хотите добавить подкоманду? Просто навешиваете еще один декоратор!
@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('Поехали! 🚀')Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤3
Понять внутреннее устройство трансформеров и механизмов 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)
Полная прозрачность реализации — каждый компонент (positional encoding, multi-head attention) написан вручную с пояснениями в Jupyter-ноутбуках.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2
Устраняет необходимость хранения паролей в конфигах или коде, используя защищенные системные хранилища.
import keyring
# Сохранение
keyring.set_password("my_app", "username", "secret123")
# Получение
password = keyring.get_password("my_app", "username")
Кроссплатформенная работа с нативными хранилищами (Windows Credential Locker, macOS Keychain, Linux Secret Service) без привязки к конкретной ОС.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
# Генерация документации для модуля
pdoc ./my_module --output-dir ./docs
Поддержка type hints и математических формул в Markdown из коробки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3
# Скачать видео/аудио по ссылке (автоопределение качества)
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤2
без ручных циклов и чтения содержимого.
- Проверка совпадения файлов при резервном копировании
- Сравнение директорий при деплое, тестировании, синхронизации
- Быстрый аудит изменений между двумя версиями данных
import filecmp
print(filecmp.cmp('file1.txt', 'file2.txt')) # True, если содержимое идентично
import filecmp
d = filecmp.dircmp('dirA', 'dirB')
d.report() # Сводный отчёт: что совпадает, что отличается
- Сравнение по содержимому и метаданным
- Умеет работать рекурсивно с подпапками
- Не надо писать собственные “обходы” и проверки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4❤3
Мгновенная обработка аудиопотока с минимальной задержкой, поддержка нескольких движков распознавания, включая Whisper и Vosk.
from realtimestt import SpeechToText
stt = SpeechToText(engine="whisper")
for text in stt.stream_from_microphone():
print("Распознано:", text)
Гибкость интеграции с разными движками STT и минимальные задержки – ваш голос превращается в текст практически мгновенно.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥4
maigret john_doe --site twitter github --timeout 10
Поддержка 700+ сайтов, гибкая настройка запросов и возможность сохранения результатов в удобном формате (JSON, HTML, CSV).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥3👍2
- Мониторинг использования CPU
psutil.cpu_percent()
- Информация о дисковом пространстве
psutil.disk_usage('/')
- Информация об ОЗУ
psutil.virtual_memory()
- Данные о сетевой активности
psutil.net_io_counters()
- Управление процессами
psutil.process_iter()
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2