Python Portal
54.2K subscribers
2.54K photos
416 videos
51 files
1.05K links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
😂😂😂

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣67🔥8😁6😢1🌚1
Media is too big
VIEW IN TELEGRAM
Кто-то недавно сделал инструмент, который генерирует и визуализирует сложные 3D particle systems просто по текстовому промпту.

Ты описываешь, что нужно — он сам собирает физику и сразу отдаёт готовый код на React или three.js.

Полностью бесплатно.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍6🤯6
🙂🙂🙂

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁32🔥7🤔4🤣1
При написании научных статей или работе с исследовательскими отчётами приходится использовать LaTeX для вёрстки, запускать Python-скрипты и постоянно переключаться между редактором и AI-веб-страницами.

Недавно, просматривая GitHub, наткнулся на open-source проект под названием ClaudePrism — это локальный десктопный клиент, специально заточенный под академическое и исследовательское письмо.

В нём есть встроенный офлайн-компилятор LaTeX, среда выполнения Python и AI-ассистент для написания текстов, при этом все файлы хранятся локально.

Также в нём есть более 100 профессиональных skill-паков для разных научных областей: биоинформатика, хемоинформатика, машинное обучение и другие.

Плюс есть фича Q&A по скриншотам — можно выделить формулу или график из PDF и сразу отправить в AI с вопросом, а также таким образом разбирать комментарии рецензентов. 😆

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🤣1
RAG не работает в 2026 году, если вы всё ещё используете старые подходы.

Да, многие компании до сих пор фейлятся с RAG — не потому что делают его неправильно, а потому что застряли на устаревших техниках.

Обычно всё происходит так: большинство компаний начинают с чат-бота / chat-приложения, когда говорят про внедрение AI. И здесь RAG становится ключевым — чтобы подключить свои данные через базу и дать чат-приложению возможность доставать релевантные документы.

Но сегодня RAG уже не ограничивается только чатами. Применения RAG практически безграничны и это хорошо.

RAG по-прежнему остаётся базой для всего, что вы строите на LLM и AI-агентах. Изменилось только одно — сами техники RAG. Старый подход больше не работает, нужны более продвинутые техники — то, что сейчас называют advanced RAG.

Суть RAG — обогащать систему своими данными через базу, чтобы она могла находить релевантные документы или их части. Результаты при этом простые и зачастую «окей», особенно если документы хорошо структурированы и их немного.

Но когда документы неструктурированы и важно получать не просто точные документы, а ещё и правильный контекст, в дело вступают продвинутые техники:

- декомпозиция запроса (query decomposition)
- обогащение метаданными (metadata enrichment)
- гибридная индексация (hybrid indexing)
- reranking
- слияние контекста (context fusion)

Эти подходы позволяют RAG-системе находить и генерировать более точные и контекстно релевантные ответы.

Поэтому advanced RAG — это важно. RAG не умер и не может умереть. Просто используйте более умные техники.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥105👍3
lmao 😂

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
34😁28
Кто-то сейчас делает веб-браузер с нуля.

Не форкает Chromium
Не использует WebKit
Не заимствует ничего из Gecko

С нуля.

Вот почему это почти безумная затея.

Практически все браузеры, которыми вы пользуетесь сегодня — Chrome, Edge, Brave, Opera, Arc, Samsung Internet — работают на Chromium. Safari работает на WebKit, от которого в своё время произошёл Chromium. Firefox — единственный независимый движок, и его доля рынка снижается уже больше десяти лет.

Браузерный движок — одна из самых сложных систем, о которой большинство людей даже не задумывается. Он парсит HTML, исполняет JavaScript, реализует CSS, обрабатывает криптографию, декодирует изображения, воспроизводит видео, управляет памятью — и всё это одновременно, для каждой вкладки, при этом поддерживая границу безопасности между вашей машиной и интернетом.

Создать такой движок с нуля — это то, что никому не удавалось успешно сделать уже больше десяти лет.

И всё же Ladybird это делает.

Более 1200 контрибьюторов. Каждый слой написан с нуля:

> LibWeb — движок рендеринга
> LibJS — JavaScript-движок
> LibWasm — WebAssembly
> LibCrypto / LibTLS — криптография
> LibGfx — графика
> LibMedia — аудио и видео

Каждая вкладка работает в отдельном sandboxed-процессе. Сетевые соединения и декодирование изображений вынесены в отдельные процессы, чтобы вредоносная страница не могла добраться до остальной системы.

Пока это pre-alpha. Релизов ещё нет. Но уже более 61K звёзд.

Когда один движок контролирует веб, одна компания фактически решает, каким будет интернет.

Именно эту проблему и пытается решить Ladybird.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍404
Распаковка словаря

Существует несколько способов распаковать словарь, чтобы извлечь его ключи и значения в отдельные переменные или структуры данных.

- Использование функции list для извлечения ключей

Если у вас есть словарь и вы хотите получить его ключи в виде списка, можно использовать функцию list. Передача словаря в качестве аргумента этой функции возвращает список ключей словаря. См. ниже:

my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}

# Извлечение ключей словаря
dict_keys = list(my_dict)
dict_keys


['name', 'age', 'city']


- Использование оператора (двойная звёздочка)

Если у вас есть функция, которая принимает значения словаря в качестве аргументов, вы можете использовать оператор ``, чтобы распаковать значения словаря при вызове функции. Ниже у нас есть функция, принимающая значения из словаря как аргументы. Мы используем оператор ** в словаре при вызове функции. Это распаковывает значения словаря и передаёт их в качестве аргументов функции.

def display_info(name, age, city):
print(f"Your name is {name}. You are {age} years old. "
f"You live in {city}")

my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
display_info(**my_dict)


Your name is John. You are 30 years old. You live in New York


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍6
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6612🌭2🔥1
🎮 Хочешь зарабатывать на играх, а не только играть?

Игровая индустрия растёт каждый год — и ей нужны специалисты.

В XYZ School обучают профессиям, без которых не создаётся ни одна игра:

🧠 Гейм-дизайнер
🖌 Концепт художник
📱 Тестировщик мобильных игр
🎬 Специалист по визуальным эффектам
💻 Разработчик игр (Unity, Unreal Engine, C#, C++)
🎨 Художник трехмерных моделей (3D-художник)

На курсах ты не просто смотришь лекции — выполняешь практические задания, собираешь портфолио и работаешь под руководством специалистов, которые участвовали в проектах вроде Doom, Fortnite и Metro.

🚀 Начать можно без опыта.
👉🏻 Посмотреть курс

Erid: 2SDnjdtoshK
Название: ООО "ИКС ВАЙ ЗЕТ НЕТВОРК"
ИНН: 9705150153
2🌚1
Практики, которые раздражают других инженеров данных

Отсутствие аннотаций типов — это неуважение к себе и к другим, кто использует ваши пайплайны. Код, который вы пишете, не только для выполнения, но и для коммуникации.

В инженерии данных аннотации типов служат контрактом между шагами пайплайна, чётко определяя, какой тип данных функция ожидает и какой тип данных она вернёт. Это делает пайплайны более предсказуемыми и проще для отладки, так как каждая функция заранее сообщает свои требования.

Это выглядит нормально, но...

def enrich_user_names(df, user_lookup=None):
pass


Это не говорит, что такое df, какого типа user_lookup, или что функция должна вернуть. Теперь представьте, что это часть производственного пайплайна с 10+ участниками. Такая неопределённость становится багом.

Вот так будет лучше:

def enrich_user_names(
df: pd.DataFrame,
user_lookup: Optional[Dict[int, str]] = None
) -> pd.DataFrame:
pass


Чёткая коммуникация с самого начала. Каждый, кто увидит эту функцию, точно будет знать, что ожидать. Вот что значит чёткая коммуникация. Аннотации типов — в помощь

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
15👀3🤯2
Когда вам когда-либо нужно было добавить математическое описание для вашей функции на Python, но вы обнаруживали, что это занимает слишком много времени?

Непрограммисты не могут легко читать логику Python. Однако вручную конвертировать её в LaTeX — это медленно, и быстро становится устаревшим по мере изменения кода.

latexify_py решает эту проблему с помощью одного декоратора, генерируя LaTeX прямо из вашей функции, чтобы математика оставалась читаемой и всегда синхронизированной с кодом.

Основные возможности:
• Три декоратора для разных выводов: выражения, полные уравнения или псевдокод
• Отображает отрендеренный LaTeX прямо в ячейках Jupyter
• Функции продолжают работать нормально при вызове

Кроме того, latexify_py — это open source. Установите с помощью "pip install latexify-py".

Статья о 3 инструментах, которые конвертируют код Python в LaTeX: https://bit.ly/3Pw89yP
Запустите этот код: https://bit.ly/4bW2ycE

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍3
Люди — корень всех проблем. 😆

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁30🤝5
Люди и агенты писали бы код лучше, если бы можно было легко проверить, какие значения переменные обычно принимают в продакшене.

Хотя подобные подходы уже встречались (в каком-то смысле ещё со времён Smalltalk), Darklang выделяется как заметный пример: у каждой функции есть примеры прошлых HTTP-запросов, и можно увидеть, как реальные данные проходят через неё.

Ещё в 2018 году я немного исследовал похожую идею: что если можно кликнуть на любую функцию в коде и увидеть примеры прошлых входных и выходных данных?

Удалось трассировать/записывать произвольные программы на Ruby (очень медленно) благодаря гибкости интерпретатора Ruby. Можно было даже записать выполнение тестов и затем использовать это как примеры данных при чтении кода.

https://geoffreylitt.com/margin-notes/

Есть серьёзные сложности, чтобы сделать это реально рабочим. Записывать большой объём детального runtime-состояния — сложно и дорого по ресурсам. А удобно показывать это состояние прямо в редакторах кода исторически тоже было непросто (хотя сейчас, с агентами, ситуация быстро меняется — в чём-то становится проще).

В целом же runtime-состояние до сих пор сильно недоиспользуется в интерфейсах разработки, а агрегированные данные из продакшена — тем более. Людям и агентам гораздо полезнее видеть конкретные данные, а не только абстрактную логику.

Чёрт возьми, у нас уже есть AI — почему бы не предсказывать, как будут меняться переменные, исходя из контекста всей организации, а не только кодовой базы 😭

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
Самый полный список видеокурсов по Computer Science в интернете.

cs-video-courses — 78K+ звёзд.

MIT.
Stanford University.
University of California, Berkeley.
Harvard University.
Carnegie Mellon University.
Indian Institutes of Technology.
Princeton University.
California Institute of Technology.

Всё бесплатно. Все лекции — в формате видео. Всё собрано в одном репозитории.

Темы:

→ Структуры данных и алгоритмы
→ Операционные системы
→ Распределённые системы
→ Системы баз данных
→ Компьютерные сети
→ Машинное обучение
→ Глубокое обучение
→ Обработка естественного языка (NLP)
→ Компьютерное зрение
→ Компьютерная графика
→ Безопасность
→ Квантовые вычисления
→ Робототехника
→ Блокчейн

От начального уровня (CS50) до продвинутого (6.824 Distributed Systems).

Учебная программа бесплатная. 🤙

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Два разработчика, ведущие разработку в одной ветке.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁48🔥52
Перевод текста с экрана в реальном времени теперь с открытым исходным кодом.

Он считывает и переводит текст из игр, видео, субтитров — вообще всего, что у тебя на экране. Мгновенно.

Раньше: сделать скриншот → скопировать → вставить → ждать обработки.
Теперь: просто работает в фоне. Я читаю японские питч-деки в реальном времени.

Ноль затрат на API. Всё работает локально. Open source. 😆

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🤯2👀2🤣1
Свойства и методы

Если вы хотите узнать свойства и методы объекта или модуля, используйте функцию dir(). Ниже мы проверяем свойства и методы строкового объекта.

my_str = 'I love Python'
print(dir(my_str))


['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__',
'__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__repr__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__',
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith',
'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha',
'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join',
'lower', 'lstrip', 'replace', 'rfind', 'rstrip', 'split',
'startswith', 'strip', 'upper']


Вы также можете использовать функцию dir(), чтобы посмотреть свойства и методы модулей. Например, если вы хотите узнать свойства, методы, атрибуты, классы и функции, доступные в модуле collections, можно использовать следующий код:

import collections
print(dir(collections))


['ChainMap', 'Counter', 'OrderedDict', 'UserDict', 'UserList',
'UserString', '__all__', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__path__',
'__spec__', '_chain', '_collections_abc', '_count_elements',
'_eq', '_iskeyword', '_itemgetter', '_proxy', '_recursive_repr',
'_repeat', '_starmap', '_sys', '_tuplegetter', 'abc',
'defaultdict', 'deque', 'namedtuple']


Один из эффективных способов использования функции dir() — проверить, доступен ли конкретный атрибут у объекта. Например, с помощью этой функции можно проверить, есть ли у списка атрибут __len__.

my_list = [1, 2, 3, 4]
print('__len__' in dir(my_list))


True


Этот код возвращает True, потому что __len__ является одним из атрибутов объекта списка.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
21
Языки программирования и их создатели по возрасту 😎

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
41👍17🔥3😁1