Python Portal
55.4K subscribers
2.46K photos
400 videos
51 files
1.01K links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
Переиграл и уничтожил

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8212🤣10🤔4😢1
Пока ElevenLabs 🤩

Вышел новый сервис Voicebox и он клонирует почти любой голос всего по нескольким секундам аудио и полностью локально на твоей машине.

Без загрузок в облако. Никакие голосовые данные не покидают девайс.

Работает на Qwen3-TTS, прорывной голосовой модели от Alibaba.

→ Загружаешь пару секунд аудио
→ Получаешь почти идеальный клон голоса
→ Генеришь речь на любом языке
→ Миксуешь мульти-голосовые диалоги в DAW-подобном таймлайне

Всё локально. Ноль зависимости от облака.

100% open source. Лицензия MIT.

macOS + Windows уже доступны. Linux скоро.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74
This media is not supported in your browser
VIEW IN TELEGRAM
Кто-то собрал ИИ, который одновременно пишет код и лазит по вебу.

Называется Accomplish и работает локально, не сжигая API-кредиты.

Без Claude Desktop. Без Cursor. Без ежемесячных подписок.

Большинство AI-инструментов для кодинга заставляют выбирать что-то одно:

Claude Desktop → только работа с компьютером
Cursor → только кодинг
Windsurf → только кодинг

Accomplish объединяет обе возможности, чтобы Claude мог и изучить библиотеку, и сразу внедрить ее, не переключаясь между инструментами.

Ты просишь: "Найди самые свежие доки Stripe API и собери платежную интеграцию"

Accomplish:

1. Открывает браузер → читает документацию Stripe

2. Пишет Python-код на основе актуального API

3. Тестирует интеграцию

4. Дебажит ошибки

Все в одной сессии. Без переключения контекста.

100% open source.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥189👍3🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Твоя Python-прога может внезапно встать колом на несколько секунд. Обычно виноват garbage collector, который пошел “наводить порядок” в памяти.

И важный момент: это может случиться даже если ты сейчас почти не аллоцируешь и не освобождаешь память. И пауза не из-за того, что он долго “чистит” память в прямом смысле.

Достаточно, чтобы программа когда-то создала очень много объектов. Даже если ты эти объекты удержал (они живые и никуда не деваются), проблема все равно останется.

В Python есть инструменты, чтобы с этим разбираться. А если спросишь, твой любимый ИИ разложит все по полочкам.

Читать статью 🙈

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
9
О, прогресс

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10520
В Python 3.15 появится полноценный иммутабельный словарь.

В модуль builtins добавляется новый публичный неизменяемый тип frozendict.

Ожидается, что frozendict будет “safe by design”, потому что он предотвращает любые непреднамеренные изменения. Это полезно не только для стандартной библиотеки CPython, но и для сторонних мейнтейнеров: можно опираться на надежный неизменяемый тип словаря.

Зачем это вообще нужно:

▪️Хочешь использовать мапу как ключ в другом dict или засунуть в set? Обычный dict нельзя, а frozendict можно (если значения тоже хэшируемые).
▪️ @functools.lru_cache() и аргументы-словари: с dict будет сложно, с frozendict нормально.
▪️Дефолты в аргументах функций: вместо “мутабельного дефолта” можно давать frozendict(...) и не ловить сюрпризы.

Как выглядит по API:

▪️Конструктор “как у dict”: frozendict(), frozendict(**kwargs), frozendict(mapping) или iterable пар, плюс можно смешивать с **kwargs.
▪️Порядок вставки сохраняется (как в обычном dict).
▪️Хэш не зависит от порядка элементов (логика через frozenset(items)), и сравнение тоже по содержимому, а не по порядку.
▪️Есть объединение через | и “обновление” |= (но |= не мутирует объект, а создает новый).
▪️.copy() в CPython по сути возвращает тот же объект (shallow), а если надо глубоко, то copy.deepcopy().
Важный момент: frozendict НЕ наследуется от dict. Это специально, чтобы нельзя было обойти “неизменяемость” вызовом dict.__setitem__ и подобных трюков.

И бонус для stdlib: авторы наметили места, где можно заменить константные/публичные мапы на frozendict (в том числе там, где сейчас MappingProxyType).

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145
Разраб придумал гениальную капчу против ИИ-агентов: чтобы записаться к нему на созвон, нужно 10 раз громко сказать «NIGGA».

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁42🤣19🤯3🔥1
Посмотрим как ты знаешь классы в Python 🤩

Вопрос по Python:

Какой будет вывод у этого кода и почему?

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍11🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Этот тул умеет скачивать буквально что угодно по ссылке

100% бесплатно. опенсорс. без рекламы.

https://cobalt.tools/

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯7👍52
Please open Telegram to view this post
VIEW IN TELEGRAM
😁35🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
Делюсь этим Python-скриптом под OSINT: это простая, но полезная штука для расследований по возможным группам киберпреступности, потому что она позволяет в реальном времени логировать статусы присутствия в Telegram. Мониторинг определяет такие состояния:

- В СЕТИ
- БЫЛ(А)
- БЫЛ(А) НЕДАВНО
- БЫЛ(А) НА ЭТОЙ НЕДЕЛЕ
- БЫЛ(А) В ЭТОМ МЕСЯЦЕ
- БЫЛ(А) ОЧЕНЬ ДАВНО
- СТАТУС НЕИЗВЕСТЕН

Хотя это только видимые метаданные, анализ временных паттернов может помочь заметить синхронные всплески активности, возможные смены между аккаунтами, повторное использование профилей или профили, которые выглядят разными, но ведут себя синхронно.

Бот может работать по запросу (через кнопку проверки), но его также можно доработать под мониторинг изменений в реальном времени, логирование переходов статусов и авто-алерты, когда аккаунт становится В СЕТИ или меняет паттерн активности. Это позволяет заранее видеть операционные пики, выявлять неактивные или приманочные аккаунты и усиливать стратегический анализ, строго в рамках закона и для легитимных целей исследования.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136🔥5
Некоторые SQL-грабли, на которые до сих пор наступают даже сеньоры (мне тоже иногда приходится лезть в доки и перепроверять):

1. = NULL никогда не бывает true. Используй IS NULL / IS NOT NULL (трехзначная логика: true, false, unknown).

2. NOT IN (...) + один NULL в списке может вернуть ноль строк. Чаще безопаснее NOT EXISTS.

3. LEFT JOIN + фильтр в WHERE превращается в INNER JOIN. Фильтры по джойну клади в ON.

4. COUNT(col) пропускает NULL, а COUNT(*) нет. Из-за этого метрики потом “магически” не сходятся.

5. NULL ломает конкатенацию и сравнения. Используй COALESCE осознанно.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3211
Согласны?

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
2😁5914👍5🔥5🌚1
Немного базы Python: print по горизонтали

Когда вы проходите циклом по итерируемому объекту, функция print печатает каждый элемент с новой строки. Это потому, что у print есть параметр end. По умолчанию значение этого параметра содержит символ перевода строки (end="\n"). Чтобы печатать в одну строку, нужно убрать перевод строки и заменить его на пустую строку (end="").

В примере ниже обратите внимание на пробел между кавычками (" "): он нужен, чтобы числа печатались с пробелами между ними. Если убрать пробел (""), числа выведутся слитно, вот так: 1367. Вот код, который это показывает:

In [1]: my_list = [1, 3, 6, 7]

for number in my_list:
print(number, end=" ")

// 1 3 6 7


У print есть еще один параметр: sep. Мы используем sep, чтобы задать, чем разделять выводимые значения. Ниже в качестве разделителя используется символ /:

In [2]: print('12', '12', '1990', sep='/')

// 12/12/1990


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍154🤯3