ChatCrawlerпоиск по публичному Telegram Открыть приложение
P

Python Community | Chat

снимок за апрель 2025
‹ апрель 2025 ›×
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
1.3K ·
I
🧠 Задача на внимание и знание подводных камней в Python Что выведет данный код? def make_funcs(): funcs = [] for i in range(3): def wrapper(x=i): return lambda: x funcs.append(wrapper()) return funcs a, b, c = make_funcs() print(a(), b(), c()) ❓ Варианты ответа: A) 0 1 2 B) 2 2 2 C) 0 0 0 D) Ошибка на этапе выполнения ✅ Ответ: 0 1 2 📘 Объяснение: 🔹 Цикл for i in range(3) проходит по значениям 0, 1, 2. 🔹 В каждой итерации вызывается wrapper(x=i) — это копирует текущее значение i в локальную переменную x. 🔹 Затем возвращается lambda: x, которая запоминает это конкретное значение x. 🔹 В итоге: a() → 0 b() → 1 c() → 2 Если бы мы не использовали x=i по умолчанию, а написали просто lambda: i, все функции замкнули бы одну и ту же переменную i, и на момент вызова она бы уже была равна 3. @Python_Community_ru
1K ·
I
🐍 Задача по Python: Замыкания и области видимости Что покажет следующий код? def outer(): x = 5 def inner(): nonlocal x x += 1 return x return inner f = outer() print(f()) print(f()) print(f()) Варианты ответа: A) 7 8 B) 5 5 C) 6 6 D) Ошибка выполнения --- ✅ Правильный ответ: A Почему: Функция outer создаёт замыкание. Переменная x сохраняется между вызовами f, так как inner замыкает x и изменяет её с помощью nonlocal. Это классический пример использования замыканий в Python. @Python_Community_ru
1K ·
I
Фотография
нажмите — покажем
Строковый метод translate позволяет заменять или удалять несколько символов в строке за один раз. Это похоже на множественные вызовы метода replace. ```python import string s = "Hello, world!" print(s.translate(str.maketrans("", "", string.punctuation))) # Hello world ``` Метод translate ожидает «таблицу перевода», которую мы создаем с помощью вспомогательного метода класса maketrans. Третий аргумент (string.punctuation в примере) — это строка символов, которые мы хотим удалить. Значение string.punctuation включает в себя следующие символы: !#$%&'()*+,-./:;?@[\]^_{|}~` Суть шпаргалки заключается в том, что она демонстрирует, как эффективно удалить все стандартные знаки препинания из строки в Python, используя комбинацию методов str.maketrans для создания инструкции по удалению и str.translate для применения этой инструкции к строке. @Python_Community_ru
1K ·
I
Ссылка
нажмите — покажем
‍🖥 Важная особенность генераторов в Python! Давайте разберемся, как это работает. Что такое генератор? Функция my_generator_function является генератором, поскольку использует ключевое слово yield. В отличие от обычной функции, которая выполняет весь код и возвращает одно значение через return, генератор "приостанавливается" на каждом yield, возвращая указанное значение. При следующем вызове он возобновляет работу с того места, где остановился. Как работает yield? Когда вы вызываете gen = my_generator_function(), код внутри функции не выполняется. Создается специальный объект-генератор (gen). Первый вызов next(gen) заставляет функцию выполниться до первого yield 1. Функция возвращает 1 и приостанавливается. Второй вызов next(gen) возобновляет выполнение с точки после yield 1 и доходит до yield 2. Функция возвращает 2 и снова приостанавливается. Именно поэтому print(next(gen), next(gen)) выводит 1 2. Как работает return в генераторе? Когда поток выполнения внутри генератора доходит до оператора return (в нашем случае return 73) или просто до конца функции без явного return, генератор считается завершенным. Важно: значение, указанное в return (здесь 73), не возвращается как обычное значение через yield. Вместо этого генератор выбрасывает специальное исключение: StopIteration. Этот механизм StopIteration является стандартным способом в Python сигнализировать, что итератор (а генератор - это тип итератора) исчерпан. Перехват StopIteration и получение значения: В правой части кода мы пытаемся вызвать next(gen) еще раз. Генератор возобновляется после yield 2, доходит до return 73 и выбрасывает StopIteration. Конструкция try...except StopIteration as err: перехватывает это исключение. Ключевой момент: значение, указанное в операторе return генератора (73), становится доступным как атрибут .value пойманного исключения StopIteration. Поэтому print(err.value) выводит 73. Итог: Return в генераторе не производит очередное значение, а завершает его ра
852 ·
Фотография
нажмите — покажем
📌 Tracecat — это платформа с открытым исходным кодом для автоматизации безопасности. Проект предоставляет шаблоны в формате YAML для создания рабочих процессов с визуальным редактором, что упрощает автоматизацию рутинных задач. Инструмент позволяет интегрировать Temporal для надежного выполнения сценариев и поддерживает MITRE D3FEND. Локальный запуск возможен с использованием Docker Compose, а для продакшена доступны конфигурации Terraform для AWS Fargate. 🤖 GitHub (https://github.com/TracecatHQ/tracecat) @Python_Community_ru
989 ·
I
Видео
6988b5e6dba73501ef837968ea817d4a_452337_1744825049.mp4 · 2.9 МБ · нажмите — покажем
🖥 Новый фреймворк Function (fxn) компилирует Python-функции в нативный код с производительностью, сравнимой с Rust. 🧠 Как это работает? - Используется символическое трассирование на CPython для анализа функций. - Генерируется промежуточное представление (IR). - IR транслируется в C++ или Rust, а затем компилируется в бинарный код. - Поддерживаются платформы: Linux, Android, WebAssembly и другие. 📦 Пример: @compile def fma(x: float, y: float, z: float) -> float: return x * y + z После компиляции вы получаете нативный бинарный файл, который можно запускать без интерпретатора Python. 🔗 Подробнее (https://blog.fxn.ai/python-at-the-speed-of-rust/) 🔗 Github (https://github.com/olokobayusuf/) #Python #Rust #fxn #Compiler #Performance #AI #ML #Wasm @Python_Community_ru
1K ·
Фотография
нажмите — покажем
🐍 Dulwich — это проект, который предоставляет альтернативу традиционным библиотекам, таким как GitPython и pygit2. Он полностью написан на Python и не требует наличия нативного Git. Этот инструмент поддерживает как базовые операции с репозиториями, так и более сложные команды, которые имитируют интерфейс командной строки Git. Для пользователей, ценящих производительность, доступны дополнительные расширения на Rust. 🤖 GitHub (https://github.com/jelmer/dulwich) @Python_Community_ru
895 ·
I
Ссылка
нажмите — покажем
‍🔍 Основные новшества в Django 5.2 1. 📦 Автоматический импорт моделей в интерактивной оболочке Теперь при запуске команды python manage.py shell все модели из установленных приложений автоматически импортируются. Это облегчает работу в интерактивной оболочке, позволяя сразу использовать модели без необходимости ручного импорта. Для получения подробной информации об импортированных объектах можно использовать флаг -v 2. 2. 🔗 Поддержка составных первичных ключей Django 5.2 вводит нативную поддержку составных первичных ключей через класс CompositePrimaryKey. Это позволяет создавать таблицы с первичным ключом, состоящим из нескольких полей, без необходимости использования сторонних решений. 3. 🧩 Гибкая настройка BoundField в формах Теперь можно переопределять класс BoundField на уровне проекта, формы или отдельного поля, устанавливая атрибут bound_field_class. Это дает разработчикам более тонкий контроль над отображением и поведением форм. 4. ⚡ Расширенная асинхронная поддержка Django продолжает развивать асинхронность, добавляя новые асинхронные методы и улучшая реализацию бэкендов аутентификации. Это особенно полезно для операций, связанных с вводом-выводом, и способствует созданию более производительных приложений. 5. 🎨 Новые виджеты форм и улучшения интерфейса Добавлены новые виджеты форм, такие как ColorInput, SearchInput и TelInput, соответствующие стандартам HTML5. Также улучшена доступность форм для пользователей с особыми потребностями. 6. 🗃️ Улучшения в работе с базой данных Поддержка изогнутых геометрий в GDAL, включая CurvePolygon, CompoundCurve, CircularString, MultiSurface и MultiCurve. По умолчанию соединения с MySQL используют кодировку utf8mb4 вместо устаревшей utf8mb3. Улучшена работа методов values() и values_list(), теперь они генерируют SELECT-запросы в указанном порядке. 🔧 Совместимость и поддержка Django 5.2 поддерживает Python версий 3.10–3.13. С выходом этой версии основная поддержка Django 5.1 завершена. Последний минорный релиз
925 ·
🐍 7 “бесполезных” функций Python, которые на самом деле полезны Инструменты из стандартной библиотеки, которые могут удивить: 1. textwrap.dedent() — убирает отступы у многострочного текста. import textwrap text = textwrap.dedent(\"\"\" Привет! Это текст с отступами. \"\"\").strip() print(text) 2. difflib.get_close_matches() — находит схожие строки. import difflib words = ["python", "java", "javascript"] print(difflib.get_close_matches("javascrip", words)) 3. uuid.uuid4() — создает уникальный идентификатор. import uuid print(uuid.uuid4()) 4. shutil.get_terminal_size() — определяет размеры терминала. import shutil columns, rows = shutil.get_terminal_size() print(f"Размер терминала: {columns}x{rows}") 5. functools.lru_cache() — сохраняет результаты функции в кэше. from functools import lru_cache @lru_cache(maxsize=None) def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) print(fib(100)) 6. itertools.groupby() — группирует элементы по ключу. from itertools import groupby data = [(&apos;fruit&apos;, &apos;apple&apos;), (&apos;fruit&apos;, &apos;banana&apos;), (&apos;veg&apos;, &apos;carrot&apos;)] for key, group in groupby(data, lambda x: x[0]): print(key, list(group)) 7. contextlib.suppress() — элегантная альтернатива конструкции try-except. from contextlib import suppress with suppress(FileNotFoundError): open("not_exist.txt") @Python_Community_ru
1K ·
Фотография
нажмите — покажем
🔥 TeleGraphite — это быстрый и надежный скрапер публичных Telegram-каналов, написанный на Python. Возможности: - Извлечение постов из нескольких каналов в формате JSON (ID, текст, время, ссылки, почты, телефоны) - Загрузка медиафайлов (фото, видео, документы) - Удаление дубликатов - Однократный режим (telegraphite once) и непрерывный (telegraphite continuous --interval) - Фильтрация по ключевым словам и типу контента (текст/медиа) - Планирование запусков по расписанию - Настройка через CLI и YAML Установка: 1) pip install telegraphite 2) Создать .env с API_ID и API_HASH 3) Список каналов в channels.txt Репозиторий: https://github.com/hamodywe/telegram-scraper-TeleGraphite @Python_Community_ru
1K ·
I
Фотография
нажмите — покажем
🐍 Как легко создать мультисловарь (Multi-dictionary) в Python Хотите, чтобы один ключ в словаре соответствовал нескольким значениям? Это просто! Используйте collections.defaultdict и встроенный list: from collections import defaultdict multidict = defaultdict(list) multidict["SW"].append("Han Solo") multidict["SW"].append("R2D2") 🔁 Теперь каждый ключ по умолчанию связан с пустым списком. А метод append добавляет новое значение в этот список. Но будьте внимательны: это немного “обман”. На самом деле словарь по-прежнему отображает один ключ → одно значение. Просто это значение — список, в который вы сами добавляете что угодно. Почему defaultdict удобен? Потому что вам не нужно проверять, существует ли ключ в словаре. Пустой список будет создан автоматически при первом обращении к ключу. @Python_Community_ru
1.1K ·
I
Фотография
нажмите — покажем
🔥 Smolmodels (https://github.com/plexe-ai/smolmodels) — это библиотека на Python, которая позволяет создавать модели машинного обучения, описывая их поведение на естественном языке и используя минимум кода! 🔍 Основные возможности Smolmodels: 🌟 Определение моделей с помощью естественного языка: Пользователь описывает намерение модели и её входные и выходные схемы на обычном языке, а библиотека автоматически выбирает метрику для оптимизации и генерирует логику для инженерии признаков, обучения модели и её оценки. 🌟 Построение модели: Метод model.build() принимает набор данных (существующий или сгенерированный) и создаёт множество возможных решений модели, обучая и оценивая их для выбора наилучшего. 🌟 Генерация данных и определение схемы: Библиотека может генерировать синтетические данные для обучения и тестирования, что полезно при отсутствии реальных данных или для дополнения существующих. 🔐 Лицензия: Apache-2.0 🖥 Github (https://github.com/plexe-ai/smolmodels) @Python_Community_ru
1.3K ·
I
Ссылка
нажмите — покажем
‍🖥 ex — это инструмент для создания единого исполняемого файла .pex, который содержит всю вашу программу на Python и её зависимости. Это самодостаточная и переносимая среда выполнения, аналогичная virtualenv, но упакованная в один файл. Зачем это нужно? Простота развертывания: чтобы установить и запустить приложение, достаточно скопировать файл app.pex и запустить его — никакой дополнительной настройки. Портируемость: один файл может включать сборки для разных платформ (Linux, macOS). Изоляция зависимостей: все библиотеки (включая C‑расширения) уже находятся внутри, поэтому конфликтов версий нет. Как пользоваться: Устанавливаем сам инструмент: pip install pex Собираем .pex-файл: pex requests -o fetch.pex --script=requests После этого fetch.pex — это готовый исполняемый файл, который при запуске сразу импортирует и запускает библиотеку requests. Интеграция с другими сборщиками: Системы вроде Pants, Buck и {py}gradle могут автоматически собирать .pex-архивы из вашего кода. Лицензия: Apache 2.0 ▪ GitHub: https://github.com/pex-tool/pex ▪ Документация: https://docs.pex-tool.org/ @Python_Community_ru
1K ·
I
Ссылка
нажмите — покажем
‍🖥 Новая функция в Python 3.14: t-строки — типобезопасные f-строки Python 3.14 вводит t"..." — новый синтаксис для строк, который ориентирован на безопасность типов и интеграцию с различными системами шаблонов, такими как SQL, HTML и другие. 🔹 Что такое t-строка? t"..." — это как f"...", но: - интерполяция ограничена и контролируется; - поддерживается строгое соответствие шаблону; - переменные можно передавать явно, что предотвращает SQL-инъекции и XSS. 🔸 Пример: name = "Alice" greeting = t"Hello, {name}!" # t-строка Вместо немедленной подстановки, как в f"...", t"..." создает шаблон с выражениями в качестве параметров. 🔐 Зачем это нужно? ✅ Обеспечение безопасности при генерации SQL, HTML, JSON ✅ Улучшение инструментов и проверки типов (посредством статического анализа) ✅ Контроль над контекстом исполнения (нельзя просто вставить переменную как есть — её нужно передать явно) 📦 Использование: t-строки — это первый шаг к "template string literals", как в TypeScript. Можно использовать с функциями: def html(template: T[str]) -> SafeHTML: ... html(t"{user_input}") 💡 Почему это важно? Старый код: f"SELECT * FROM users WHERE name = &apos;{user_name}&apos;" может привести к SQL-инъекциям и XSS. t-строки являются безопасной альтернативой с встроенной защитой. 🛡 Пример: безопасный HTML template = t"{user_input}" html_output = html(template) # <script>alert(&apos;bad&apos;)</script> Функция html() может вернуть не просто строку, а полноценный HTMLElement. Больше никакой "грязи" — всё чисто и типобезопасно. 🔍 Работа с шаблоном t-строки позволяют получить доступ к содержимому: template = t"Hello {name}!" template.strings # ("Hello ", "!") template.values # (name,) template.interpolations[0].format_spec # ">8" Можно также вручную собрать шаблон: Template("Hello ", Interpolation(value="World", expression="name"), "!") 🚀 Вывод: t"..." — шаг к безопасным шаблонам и типизации строк в Python. Готовься к будущему Python — безопасному по умолчанию
957 ·
I
Видео
d50521fa245b74edd17c2e3dd62cc44d_452337_1745492572.mp4 · 530 КБ · нажмите — покажем
Zev 🔍 Это помощник для работы с терминалом на естественном языке. Он помогает быстро находить нужные команды и сохранять их в избранное. Его простой и понятный интерфейс делает освоение терминала доступным даже для новичков. pip install zev 📌 Github (https://github.com/dtnewman/zev) @Python_Community_ru
996 ·
I
Ссылка
нажмите — покажем
‍🖥 PDF Craft — это библиотека на Python, предназначенная для преобразования PDF (в первую очередь сканированных книг) в Markdown и EPUB, с использованием локальных AI-моделей и LLM для структурирования содержимого. 🌟 Основные возможности: - Извлечение текста и макета. Используется комбинация DocLayout-YOLO и собственных алгоритмов для обнаружения и фильтрации заголовков, колонтитулов, сносок и номеров страниц. - Локальный OCR. Распознаёт текст на странице с помощью OnnxOCR и поддерживает ускорение на GPU (CUDA). - Определение порядка чтения. С помощью layoutreader создаётся поток текста в том порядке, который воспринимает человек. - Конвертация в Markdown. Генерирует .md с относительными ссылками на изображения (иллюстрации, таблицы, формулы) в папке assets. - Конвертация в EPUB. На основе промежуточных результатов OCR передаёт данные в LLM (рекомендуется DeepSeek) для создания оглавления, глав, исправления ошибок и добавления аннотаций. Установка и требования: Python версии 3.10 или выше (рекомендуется 3.10.16). Используйте команды pip install pdf-craft и pip install onnxruntime==1.21.0 (или onnxruntime-gpu==1.21.0 для CUDA). Для EPUB-конвейера необходим доступ к LLM-сервису (например, DeepSeek). 🟡 GitHub (https://github.com/oomol-lab/pdf-craft) @Python_Community_ru
1.2K ·
I
Фотография
нажмите — покажем
👾 FlexGet — это инструмент, который превращает рутинные задачи в автоматизированные рабочие процессы: от загрузки сериалов по RSS до организации медиатеки. Модульная архитектура проекта особенно удобна. Базовый функционал включает более 150 плагинов для интеграции с qBittorrent, Plex и другими сервисами. При этом вся логика описывается с помощью декларативного подхода. 🤖 GitHub (https://github.com/Flexget/Flexget) @Python_Community_ru
1.1K ·
I
Фотография
нажмите — покажем
🔹 Тысяча гайдов для разработчиков в одном репозитории! Разработчик из Твиттера собирал этот настоящий кладезь знаний целых 10 лет. Внутри — буквально всё: от шпаргалок по горячим клавишам для ускорения работы до фундаментальных руководств по языкам программирования, веб-разработке, созданию ПО, сетям, безопасности и многому другому. Что там есть: 📚 Инструменты для работы с CLI, GUI, вебом и локальными сетями. 📦 Списки всех актуальных фреймворков и библиотек 2025 года. 🛡 Гайды по тестированию и взлому приложений. 🔥 Шпаргалки по командной строке. 📰 Огромная подборка блогов, YouTube-каналов, онлайн-СМИ и журналов, чтобы быть в курсе и не терять хватку. Фолиант знаний ждёт тебя! 📌 Github (https://github.com/trimstray/the-book-of-secret-knowledge?tab=readme-ov-file#manualshowtostutorials-toc) @Python_Community_ru
1.1K ·
I
Фотография
нажмите — покажем
Что выведет данный код при запуске на Python 3.10+ (например, 3.11)? 📌 Подсказка: Обратите внимание на порядок проверок, на то, какие атрибуты попадают в others, и на использование __match_args__. Ответ: Automatic mode Mode manual, другие ключи: ['threshold', 'debug'] Низкий порог 0 Краткое пояснение: Для первого объекта (mode="auto", threshold=10) срабатывает первый case Config(mode="auto") → Automatic mode. Для второго (mode="manual", threshold=5, debug=True) первый не совпадает, второй с threshold. @Python_Community_ru
997 ·
I
Ссылка
нажмите — покажем
‍🖥 PyXL — это аппаратный процессор, который выполняет Python-код без использования интерпретатора. Создатель представил PyXL — уникальный процессор, способный запускать Python-программы напрямую, без необходимости в традиционном интерпретаторе или виртуальной машине. Структура PyXL: Python → байткод CPython → собственный набор команд для непосредственного выполнения на аппаратном уровне. Он построен на основе стековой модели, полностью конвейерный и сохраняет динамическую типизацию Python без ограничений, связанных со статическими типами. ⏩ Тест производительности GPIO: PyXL переключает GPIO с задержкой всего 480 наносекунд. Для сравнения: MicroPython на Pyboard требует 14–25 микросекунд, несмотря на более высокую частоту (168 МГц против 100 МГц у PyXL). Создатель самостоятельно разработал: Компилятор, линкер и генератор кода, А также аппаратную реализацию процессора. Этот проект показывает, что возможно аппаратное исполнение Python с высокой скоростью и без ущерба для гибкости языка. Полные технические детали будут раскрыты на PyCon 2025. 🎬 Демонстрация и подробная информация: https://runpyxl.com/gpio @Python_Community_ru
1.1K ·
Календарь: апрель 2025
Архив по месяцам
Открыть в Telegram Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог