kitty | GPU-терминал
Пока мир сходит с ума от требовательных к видеокартам моделей, одна небольшая команда перевела терминал на графические процессоры, и это дало солидный прирост производительности. Настолько, что на GitHub этой библиотеке выставили 25К+ звезд.
Цифры на таблице — это мегабайты данных в секунду, которые обрабатывает терминал. Измерения проводились под Linux/X11 с AMD Ryzen 7 PRO 5850U.
Документация
@zen_of_python
Пока мир сходит с ума от требовательных к видеокартам моделей, одна небольшая команда перевела терминал на графические процессоры, и это дало солидный прирост производительности. Настолько, что на GitHub этой библиотеке выставили 25К+ звезд.
Цифры на таблице — это мегабайты данных в секунду, которые обрабатывает терминал. Измерения проводились под Linux/X11 с AMD Ryzen 7 PRO 5850U.
Документация
@zen_of_python
👍8🔥3❤1😱1
torchtitan | Фреймворк от PyTorch для LLM
Проект в стадии proof-of-concept, однако уже собрал 2К+ звезд на GitHub. Создатели самого влиятельного ML-фреймворка современности создали специфическую версию для обучения собственных Large Language Models. Теперь войти в эту игру среднему бизнесу станет еще проще.
Репозиторий проекта
#llm #инструмент
@zen_of_python
Проект в стадии proof-of-concept, однако уже собрал 2К+ звезд на GitHub. Создатели самого влиятельного ML-фреймворка современности создали специфическую версию для обучения собственных Large Language Models. Теперь войти в эту игру среднему бизнесу станет еще проще.
Репозиторий проекта
#llm #инструмент
@zen_of_python
👍8
Вышел PEP 767
Одно из главных нововведений — режим ReadOnly («только для чтения») для атрибутов классов и протоколов. Это добавляет ясности при работе со статическими анализаторами типов, которые будут проверять соблюдение этого условного ограничения.
Проблема с текущими механизмами:
—
— Применение свойства с
— Замороженные классы (например, с
Читать PEP полностью
@zen_of_python
Одно из главных нововведений — режим ReadOnly («только для чтения») для атрибутов классов и протоколов. Это добавляет ясности при работе со статическими анализаторами типов, которые будут проверять соблюдение этого условного ограничения.
Проблема с текущими механизмами:
—
typing.Final накладывает ограничения на переопределение в подклассах;— Применение свойства с
@property требует дополнительного шаблона кода и неочевидно;— Замороженные классы (например, с
dataclass(frozen=True)) накладывают ограничения на весь класс, что может быть избыточно.Читать PEP полностью
@zen_of_python
👍10🔥1🌚1🆒1
Leopards | быстрая фильтрация списков
Библиотека позволяет фильтровать списки с логикой SQL
Репозиторий проекта
#инструмент
@zen_of_python
Библиотека позволяет фильтровать списки с логикой SQL
OR / AND / NOT, причем намного быстрее Pandas.Репозиторий проекта
#инструмент
@zen_of_python
⚡1
peek | Дебажить грамотнее, чем с print()
Утилита позволяет настраивать, куда и как будет выводиться информация во время выполнения программы. Вы можете выводить данные в командную строку, записывать их в файл или использовать собственный обработчик.
Вы можете управлять детализацией вывода, фильтровать сообщения по критичности и использовать много других полезных фичей.
Цена: бесплатно
Документация проекта
#инструмент
@zen_of_python
Утилита позволяет настраивать, куда и как будет выводиться информация во время выполнения программы. Вы можете выводить данные в командную строку, записывать их в файл или использовать собственный обработчик.
Вы можете управлять детализацией вывода, фильтровать сообщения по критичности и использовать много других полезных фичей.
Цена: бесплатно
Документация проекта
#инструмент
@zen_of_python
👍4
Forwarded from Типичный программист
Microsoft открыла исходный код Python-либы для преобразования файлов в Markdown
MarkItDown — идеальное решение для конвертации файлов и офисных документов в Markdown. Подойдёт для анализа, индексации или упорядочивания данных.
Что поддерживает:
— PDF, PowerPoint, Word, Excel.
— Изображения (EXIF и OCR).
— Аудио (метаданные и транскрипция речи).
— HTML (включая специальную обработку Wikipedia).
— Text-based форматы: CSV, JSON, XML и другие.
Плюсом можно прикрутить LLM для описания изображений.
#инструменты #python #анализ
MarkItDown — идеальное решение для конвертации файлов и офисных документов в Markdown. Подойдёт для анализа, индексации или упорядочивания данных.
Что поддерживает:
— PDF, PowerPoint, Word, Excel.
— Изображения (EXIF и OCR).
— Аудио (метаданные и транскрипция речи).
— HTML (включая специальную обработку Wikipedia).
— Text-based форматы: CSV, JSON, XML и другие.
Плюсом можно прикрутить LLM для описания изображений.
#инструменты #python #анализ
This media is not supported in your browser
VIEW IN TELEGRAM
👍3❤1
Forwarded from Python: задачки и вопросы
👍3
Forwarded from Python: задачки и вопросы
Выводится '
Spam', поскольку оператор nonlocal означает, что присваивание X внутри вложенной функции изменяет X в локальной области видимости объемлющей функции. Без этого оператора присваивания классифицировало X бы как локальную переменную во вложенной функции, делая ее другой переменной; тогда код выводил бы 'Ni'.👍4
Как выглядит день Python-разработчика, если бы его описывал создатель экзистенциализма
Редакция Tproger попросила ChatGPT описать типичный день питониста так, словно это рассказ Жан Поля Сартра, и вот что из этого получилось:
Утро. Рассвет несет с собой новые возможности, но также и бремя выбора. Разработчик просыпается в своем cramped пространстве — маленькой комнате, заставленной горой книг и компьютерных девайсов. Вокруг него царит хаос, отражающий внутреннее состояние: пустые чашки из-под кофе, закладки на страницах о Python и фреймворках, которые ждут своего часа.
Он включает компьютер, и здесь начинается его борьба. Первые строки кода — это манифест его существования. Каждая буква, каждая команда, каждое решение требуют от него осознанности. Он понимает, что его код может быть как искусством, так и абсурдом, в зависимости от того, как он его напишет. В этом заключается его свобода и одновременно его проклятие.
Работа над проектом затягивается. Он сталкивается с багами, которые кажутся не только техническими проблемами, но и отражением его внутренней борьбы. "Почему я выбрал Python?" — спрашивает он себя. Но вопрос этот не дает ответов, лишь больше погружает в размышления о вечной проблеме человеческого существования и первопричинах. Он понимает, что каждая строка кода, даже самая незначительная, влияет на весь проект, как каждое малое решение формирует его судьбу.
Полдень. Он делает перерыв, но мысли о коде не покидают его. Эти мысли, как призраки, навязчиво возвращаются к нему, напоминая о том, что жизнь разработчика — это ежедневная борьба за понимание, контроль и гармонию в мире, где все постоянно меняется. Коллеги обсуждают последние тренды в разработке, но он ощущает абсурдность этой гонки. "Зачем мне следовать за модой, если я могу создать нечто свое?" — думает он, с опасением глядя на свою отражающую экран пустую строчку кода.
Вечер. Он смотрит на результаты своего труда. Код работает, но к какому выводу он пришел? Разработчик создает небольшую программу, которая помогает решать задачи, но в ней есть ирония — ее успех измеряется не успехом, а его осознанием, что он создал нечто полезное всего лишь для того, чтобы заполнить пустоту своего существования. Здесь, в этих строчках кода, он находит смысл. Он понимает, что в мире абсурда, лишь он — творец своего собственного значения, и каждый шаг, каждый клик — это возможность утвердить свое право на существование.
Ночь. Он завершает работу, выключает компьютер и, возможно, выпивает бокал вина, размышляя о том, что впереди еще множество дней, полных борьбы, выбора и кода. Но он готов. Это его путь, и он осознанно идет по нему, живя в тот самый момент, когда код обретает жизнь.
@zen_of_python
Редакция Tproger попросила ChatGPT описать типичный день питониста так, словно это рассказ Жан Поля Сартра, и вот что из этого получилось:
Утро. Рассвет несет с собой новые возможности, но также и бремя выбора. Разработчик просыпается в своем cramped пространстве — маленькой комнате, заставленной горой книг и компьютерных девайсов. Вокруг него царит хаос, отражающий внутреннее состояние: пустые чашки из-под кофе, закладки на страницах о Python и фреймворках, которые ждут своего часа.
Он включает компьютер, и здесь начинается его борьба. Первые строки кода — это манифест его существования. Каждая буква, каждая команда, каждое решение требуют от него осознанности. Он понимает, что его код может быть как искусством, так и абсурдом, в зависимости от того, как он его напишет. В этом заключается его свобода и одновременно его проклятие.
Работа над проектом затягивается. Он сталкивается с багами, которые кажутся не только техническими проблемами, но и отражением его внутренней борьбы. "Почему я выбрал Python?" — спрашивает он себя. Но вопрос этот не дает ответов, лишь больше погружает в размышления о вечной проблеме человеческого существования и первопричинах. Он понимает, что каждая строка кода, даже самая незначительная, влияет на весь проект, как каждое малое решение формирует его судьбу.
Полдень. Он делает перерыв, но мысли о коде не покидают его. Эти мысли, как призраки, навязчиво возвращаются к нему, напоминая о том, что жизнь разработчика — это ежедневная борьба за понимание, контроль и гармонию в мире, где все постоянно меняется. Коллеги обсуждают последние тренды в разработке, но он ощущает абсурдность этой гонки. "Зачем мне следовать за модой, если я могу создать нечто свое?" — думает он, с опасением глядя на свою отражающую экран пустую строчку кода.
Вечер. Он смотрит на результаты своего труда. Код работает, но к какому выводу он пришел? Разработчик создает небольшую программу, которая помогает решать задачи, но в ней есть ирония — ее успех измеряется не успехом, а его осознанием, что он создал нечто полезное всего лишь для того, чтобы заполнить пустоту своего существования. Здесь, в этих строчках кода, он находит смысл. Он понимает, что в мире абсурда, лишь он — творец своего собственного значения, и каждый шаг, каждый клик — это возможность утвердить свое право на существование.
Ночь. Он завершает работу, выключает компьютер и, возможно, выпивает бокал вина, размышляя о том, что впереди еще множество дней, полных борьбы, выбора и кода. Но он готов. Это его путь, и он осознанно идет по нему, живя в тот самый момент, когда код обретает жизнь.
@zen_of_python
Telegram
Zen of Python
Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL
❤🔥6👍3
Python: итоги года от одного из друзей Python Software Foundation
Очень познавательный англоязычный лонгрид со статой из мира Python-разработки:
— какие облака популярны;
— какие фреймворки для чего используются;
— использование Docker + Kubernetes;
— какие менеджеры зависимостей побеждают и многое другое.
Читать
#факты
@zen_of_python
Очень познавательный англоязычный лонгрид со статой из мира Python-разработки:
— какие облака популярны;
— какие фреймворки для чего используются;
— использование Docker + Kubernetes;
— какие менеджеры зависимостей побеждают и многое другое.
Читать
#факты
@zen_of_python
❤1
Какое утверждение про lambda-функции верно?
Anonymous Quiz
8%
Они используются там, где def не поместить
8%
У них бывают аргументы по умолчанию
32%
Они не поддерживают большой уровней вложенности
52%
Верно все вышеперечисленное
👍6
Простыми словами о сложном: лямбда-функции
Помимо инструкции
Это выражение создает функцию, которая будет вызываться позднее, но в отличие от инструкции
На практике они часто используются, как способ получить встроенную функцию или отложить выполнение фрагмента программного кода.
В общем виде lambda-выражение состоит из ключевого слова lambda, за которым следуют один или более аргументов (точно так же, как список аргументов в круглых скобках в заголовке инструкции def) и далее, вслед за двоеточием, находится выражение:
lambda – это выражение, а не инструкция. По этой причине это ключевое слово может появляться там, где синтаксис языка Python не позволяет использовать инструкцию
Тело lambda-выражения сродни тому, что вы помещаете в инструкцию
Вследствие этого ограничения lambda-выражения менее универсальны, чем инструкция def – в теле lambda-выражения может быть реализована только логика, не использующая такие инструкции, как if. Такая реализация предусмотрена заранее – она ограничивает возможность создания большого числа уровней вложенности программ: lambda-выражения предназначены для создания простых функций, а инструкции def – для решения более сложных задач.
Если отвлечься от этих различий,
Того же эффекта можно достигнуть с помощью lambda-выражения, явно присвоив результат имени, которое позднее будет использоваться для вызова функции:
@zen_of_python
Помимо инструкции
def имеется возможность создавать объекты функций в форме выражений. Из-за сходства с аналогичной возможностью в языке LISP она получила название lambda. lambda x, y, z: x + y + zЭто выражение создает функцию, которая будет вызываться позднее, но в отличие от инструкции
def, выражение не связывает ее с именем. Именно поэтому lambda-выражения иногда называют анонимными (то есть безымянными) функциями. На практике они часто используются, как способ получить встроенную функцию или отложить выполнение фрагмента программного кода.
В общем виде lambda-выражение состоит из ключевого слова lambda, за которым следуют один или более аргументов (точно так же, как список аргументов в круглых скобках в заголовке инструкции def) и далее, вслед за двоеточием, находится выражение:
lambda argument1, argument2,... argumentN : выражение, использующее аргументы lambda – это выражение, а не инструкция. По этой причине это ключевое слово может появляться там, где синтаксис языка Python не позволяет использовать инструкцию
def – внутри литералов или в вызовах функций, например. Тело lambda-выражения сродни тому, что вы помещаете в инструкцию
return внутри определения def, – вы просто вводите результат в виде выражения вместо его явного возврата. Вследствие этого ограничения lambda-выражения менее универсальны, чем инструкция def – в теле lambda-выражения может быть реализована только логика, не использующая такие инструкции, как if. Такая реализация предусмотрена заранее – она ограничивает возможность создания большого числа уровней вложенности программ: lambda-выражения предназначены для создания простых функций, а инструкции def – для решения более сложных задач.
Если отвлечься от этих различий,
def и lambda выполняют одну и ту же работу. Как создаются функции с помощью инструкции def: def func(x, y, z): return x + y + zfunc(2, 3, 4) # 9Того же эффекта можно достигнуть с помощью lambda-выражения, явно присвоив результат имени, которое позднее будет использоваться для вызова функции:
f = lambda x, y, z: x + y + zf(2, 3, 4) # 9@zen_of_python
👍10❤2
Вопросы подписчиков
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
Zen of Python поддерживает новоприбывших (и не только) в особой рубрике. Как это работает:
— Спрашивайте что угодно (в комментариях под этим постом), связанное с Python. Здесь нет плохих вопросов!
— Сообщество вас поддержит. Самые интересные вопросы мы разберём в отдельном посте;
#вопросыновичков
@zen_of_python
👍3
plt.xkcd() | Пасхалка для любителей мемных графиков
В официальной документации Matplotlib есть блок, посвященный функции
А если вам захотелось покекать, то вот ссылка на официальный сайт создателя Монро.
#кек
@zen_of_python
В официальной документации Matplotlib есть блок, посвященный функции
plt.xkcd(). Она строит графики в стиле одноименных комиксов (как на картинке).with plt.xkcd(): # Based on "Stove Ownership" from XKCD by Randall Munroe # https://xkcd.com/418/ fig = plt.figure() ax = fig.add_axes((0.1, 0.2, 0.8, 0.7)) ax.spines[['top', 'right']].set_visible(False) ax.set_xticks([]) ax.set_yticks([]) ax.set_ylim([-30, 10]) data = np.ones(100) data[70:] -= np.arange(30) ax.annotate( 'THE DAY I REALIZED\nI COULD COOK BACON\nWHENEVER I WANTED', xy=(70, 1), arrowprops=dict(arrowstyle='->'), xytext=(15, -10)) ax.plot(data) ax.set_xlabel('time') ax.set_ylabel('my overall health') fig.text( 0.5, 0.05, '"Stove Ownership" from xkcd by Randall Munroe', ha='center')А если вам захотелось покекать, то вот ссылка на официальный сайт создателя Монро.
#кек
@zen_of_python
😁6👍4❤1
Обновился NumPy
Среди нововведений:
— появилась функция
— появилась функция
— Улучшенная поддержка StringDType (специальный строковый тип данных в Numpy) в контексте Ufuncs (универсальные функции для эффективные вычислений в массивах без необходимости явного зацикливания).
Release Notes
#инструмент
@zen_of_python
Среди нововведений:
— появилась функция
numpy.matvec() для перемножения матрицы и вектора;— появилась функция
numpy.vecmat() для перемножения вектора и матрицы;— Улучшенная поддержка StringDType (специальный строковый тип данных в Numpy) в контексте Ufuncs (универсальные функции для эффективные вычислений в массивах без необходимости явного зацикливания).
Release Notes
#инструмент
@zen_of_python
👍8
ridgeplot | Красивые графики распределения
Инструмент позволяет строить Ridge Plots — разновидность гистограммы, похожей на горный хребет. Это по сути надстройка над небезызвестным Plotly, при этом прописать тонкостей можно еще больше — интервалы, цвета, шрифты и многое другое.
Репозиторий проекта
#инструмент
@zen_of_python
Инструмент позволяет строить Ridge Plots — разновидность гистограммы, похожей на горный хребет. Это по сути надстройка над небезызвестным Plotly, при этом прописать тонкостей можно еще больше — интервалы, цвета, шрифты и многое другое.
Репозиторий проекта
#инструмент
@zen_of_python
👍4
Forwarded from Python: задачки и вопросы
В каком порядке в функции указываются аргументы?
Anonymous Quiz
72%
Позиционные, ключевые, *итерируемый_объект, **словарь
8%
Позиционные, ключевые, **словарь, *итерируемый_объект
9%
Ключевые, позиционные, **словарь, *итерируемый_объект
11%
Порядок неважен