TGViewer
Channel Public Channel
Python Portal

Python Portal

@pythonportal

Всё самое интересное из мира Python

Сотрудничество, реклама: @devmangx

Работаем с @Spiral_Yuri

РКН: https://clck.ru/3GMMF6
Subscribers
50.2K
Photos
2.9K
Videos
487
Links
1.3K

Showing posts older than #5523 · Back to latest

Older Posts 17 shown
Post #5522 7.43K
Если ты только начинаешь с Python, остановись и внимательно посмотри

Не меняй список во время прохода по нему.

Когда ты модифицируешь список прямо во время итерации, итератор начинает путаться. Он не “знает”, что список изменился прямо у него под ногами.

Например, этот код сломан:

items = [1, 2, 2, 3, 4]
for item in items:
if item == 2:
items.remove(item)
print(items)
# Output: [1, 2, 3, 4]


Здесь мы используем remove(), чтобы удалить все двойки из списка. Но если посмотреть на вывод, одна 2 все равно осталась. Почему так происходит: когда ты удаляешь элемент из списка, все элементы справа сдвигаются влево. А цикл продолжает идти дальше. В итоге происходит вот что: находится и удаляется первая 2. Вторая 2 сдвигается на ее место. Цикл переходит к следующему индексу и пропускает эту 2.

Лучший способ сделать это: итерироваться по копии:

for item in items[:]:
if item == 2:
items.remove(item)
print(items)
# Output: [1, 3, 4]


Когда ты проходишь по копии (поверхностной копии), индексы в исходной копии не меняются.

Еще лучше использовать list comprehension:

items = [x for x in items if x != 2]


Никогда, ни при каких условиях не модифицируй список (или любую коллекцию) прямо во время итерации по нему. Итератор плохо переносит структурные изменения: он может пропускать элементы, обрабатывать один и тот же элемент дважды или (в некоторых случаях, например со словарями) выбрасывать RuntimeError. Это плохая практика.

👉 @PythonPortal
  • ❤ 38
  • 👍 15
  • 🔥 6
  • 🤣 1
Post #5521 7.44K
Немного базы 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 #100daysofpython
  • 👍 27
  • ❤ 12
  • 🤯 3
  • 🔥 1
Post #5520 6.86K
Согласны?

👉 @PythonPortal
  • 😁 104
  • ❤ 24
  • 👍 13
  • 🔥 8
  • 🌚 1
Post #5519 7.24K
Некоторые 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
  • 👍 39
  • ❤ 14
Post #5518 7.4K
Делюсь этим Python-скриптом под OSINT: это простая, но полезная штука для расследований по возможным группам киберпреступности, потому что она позволяет в реальном времени логировать статусы присутствия в Telegram. Мониторинг определяет такие состояния:

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

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

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

👉 @PythonPortal
  • 👍 17
  • ❤ 8
  • 🔥 5
  • 🤣 1
Post #5516 8.32K
Этот тул умеет скачивать буквально что угодно по ссылке

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

https://cobalt.tools/

👉 @PythonPortal
  • 🤯 15
  • 👍 6
  • ❤ 2
Post #5515 7.93K
Посмотрим как ты знаешь классы в Python 🤩

Вопрос по Python:

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

👉 @PythonPortal
  • ❤ 23
  • 👍 11
  • 🤔 1
Post #5514 8.35K
Разраб придумал гениальную капчу против ИИ-агентов: чтобы записаться к нему на созвон, нужно 10 раз громко сказать «NIGGA».

👉 @PythonPortal
  • 😁 52
  • 🤣 24
  • 🤯 3
  • 🔥 2
Post #5513 8.45K
В 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
Python Enhancement Proposals (PEPs) PEP 814 – Add frozendict built-in type | peps.python.org A new public immutable type frozendict is added to the builtins module.
  • 👍 17
  • ❤ 6
Post #5511 8.24K
Твоя Python-прога может внезапно встать колом на несколько секунд. Обычно виноват garbage collector, который пошел “наводить порядок” в памяти.

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

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

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

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

👉 @PythonPortal
  • ❤ 13
Post #5509 7.65K
Кто-то собрал ИИ, который одновременно пишет код и лазит по вебу.

Называется 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
  • 🔥 21
  • ❤ 11
  • 👍 3
  • 🤔 1
Post #5508 7.8K
Пока ElevenLabs 🤩

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

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

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

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

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

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

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

👉 @PythonPortal
  • 👍 11
  • ❤ 4
Post #5507 7.21K
Переиграл и уничтожил

👉 @PythonPortal
  • 😁 92
  • ❤ 13
  • 🤣 12
  • 🤔 4
  • 😢 1
Post #5506 8.95K
Настройка среды разработки: VSCode, Docker для Python-проектов. Debug внутри контейнера

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

👉 @PythonPortal
  • ❤ 14
  • 👍 4
Post #5500 8.68K
Кто-то собрал тулзу, которая СНИМАЕТ ЦЕНЗУРУ у LLM за 45 минут одной-единственной командой

Называется HERETIC 👌

Вот как это работает и почему об этом сейчас все говорят:

Короткий контекст: ЛЛМки поставляются с safety-alignment, поэтому на некоторые промпты они отвечают отказом.

Техника, чтобы это убрать, называется abliteration: находят “направление отказа” внутри весов модели, а затем математически СТИРАЮТ его.

Проблема? Делать это руками нормально было медленно, нестабильно по результатам и требовало глубоких знаний в ML.

HERETIC автоматизирует ВЕСЬ процесс.

Ты даешь ему имя модели, он прогоняет вредные и безвредные промпты, мапит, где именно “живёт отказ” в residual stream, а потом через байесовскую оптимизацию подбирает лучшие параметры “удаления”.

Старые инструменты использовали ФИКСИРОВАННЫЙ вес абляции для всех слоев. HERETIC использует гибкое ядро весов, типа ручки громкости, которая на разной глубине сети может усиливаться или ослабляться.

Плюс он обрабатывает MLP и attention heads ОТДЕЛЬНО. MLP более хрупкие, поэтому для них операция более “щадящая”.

Один тестер прогнал heretic-модель через приватный IQ-тест для LLM, где даже GPT-4 спотыкается.

Идеальный результат.

Другой назвал heretic-вариант gpt-oss 20b ЛУЧШЕЙ “uncensored” моделью, которую он пробовал.

Мы прошли путь от “пожалуйста, джейлбрейкни мою модель 500-словным промптом, который ломается со следующим апдейтом” к “математически удалить цепь отказа за 45 минут, и это НАВСЕГДА”.

Это не “патчится обратно”, это НЕ джейлбрейк: веса ИЗМЕНЕНЫ навсегда.

И поскольку HERETIC оптимизирует минимальную потерю интеллекта, ты не меняешь capability на свободу… ты получаешь И ТО, И ДРУГОЕ

“uncensored”-версия больше не “тупой кузен”, это та же модель, только без намордника.

👉 @PythonPortal
  • 👍 17
  • ❤ 7
  • 🤔 4
  • 🔥 2
  • 🤯 1
  • 🌚 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →