ru
Feedback
Питонические атаки

Питонические атаки

Открыть в Telegram

Всяческие заметки про программирование на Python и другие весёлые истории.

Больше
1 299
Подписчики
Нет данных24 часа
-37 дней
-1130 день
Архив постов
Неделю назад появился черновик PEP 657, который предлагает в трейсбеках показывать не только номер строки, где возникла ошибка, но и смещение (то есть номера символов в строке). Таким образом вместо вот такой расплывчатой ошибки:
Traceback (most recent call last):
  File "test.py", line 19, in <module>
    foo(a.name, b.name, c.name)
AttributeError: 'NoneType' object has no attribute 'name'

Интерпретатор сможет указать на конкретное выражение в строке, вызвавшее ошибку: Traceback (most recent call last): File "test.py", line 17, in <module> foo(a.name, b.name, c.name) ^^^^^^ AttributeError: 'NoneType' object has no attribute 'name' В документе есть и другие примеры. Выглядит приятно! 👍 Так как для ветки 3.10 уже наступил фича-фриз, эту функциональность стоит ждать не раньше 3.11.

Чуваки из RealPython всё-таки добили меня рекламой своей новой книги. Так и быть, беру! Правда, учитывая мою очередь из книг
Чуваки из RealPython всё-таки добили меня рекламой своей новой книги. Так и быть, беру! Правда, учитывая мою очередь из книг и скорость, с которой я их читаю, доберусь я до неё года через три. Автор книги — Энтони Шоу — по совместительству ещё и мейнтейнер pyjion (Python с JIT-компилятором из .NET), так что он наверняка знает своё дело. Если вдруг вам тоже такое интересно, то вот здесь эта книга продаётся. Говорят, что сейчас там пока не полная цена.

#пятница #meme
#пятница #meme

Я пока только пытаюсь вникнуть, что всё это значит, но первые результаты работы по ускорению CPython уже можно увидеть в PEP 659: https://www.python.org/dev/peps/pep-0659/ Похоже, что в CPython хотят вкрутить какое-то подмножество полноценного JIT-компилятора.

⚡️Ломающие новости! ⚡️ Вчера на Language Summit, проходящем в рамках PyCon US, стало известно, что Гвидо ван Россум, Марк Шеннон и Эрик Сноу работают фулл-тайм над проектом по ускорению CPython. Спонсирует работу Microsoft. Работа пока что происходит вот в этой организации на GitHub: https://github.com/faster-cpython/. Там у них есть свой форк CPython. Кстати, вот здесь лежит презентация Гвидо с этого Language Summit: https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf

По крайней мере два из трёх докладов выглядят интересными ☝️

🐍 Важные новости! 🏡 Друзья, через 2 недели мы проводим Pytup в онлайне. ⏱ В среду 26 мая в 17:00 Мск обсудим, когда нейросети заменят программистов, какие возможности Python используются в реальном мире чаще всего и как понять, что Поиск работает хорошо. 📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.

Как сообщают в чате, вышел мажорный релиз Flask 2.0 и других связанных с ним библиотек (Werkzeug, Jinja, Click, ItsDangerous). https://palletsprojects.com/blog/flask-2-0-released/ * Python 2 больше не поддерживается; * Добавлены тайп-аннотации; * Можно делать асинхронные обработчики запросов; * Добавлены удобные декораторы-шорткаты для объявления обработчиков запросов с разными HTTP-методами. Пора обновляться! Ну, или хотя бы аккуратно начинать задумываться об обновлении. #flask

PyCon 2016, Гвидо еще не знает, как будут объявляться переменные с типами Спасибо, что выбрали последний вариант, остальное в
PyCon 2016, Гвидо еще не знает, как будут объявляться переменные с типами Спасибо, что выбрали последний вариант, остальное выглядит очень сомнительно

Выступление пророка нашего Гвидо ван Россума, где он презентует идею тайп-аннотаций на PyCon 2015. Иногда любопытно погрузиться в историю и посмотреть, как оно всё тогда было. Кстати, выступление кроме исторической ценности имеет еще и образовательную — с тех пор не так уж и много поменялось, так что если вам нужно введение в тему, то тоже можно посмотреть. https://youtu.be/2wDvzy6Hgxg

Since Python doesn't have a char type, an element of str is always str:
'@pythonetc'[0][0][0][0][0]
# '@'
This is an infinite type and you can't construct in a strictly typed language (and why would you?) because it's unclear how to construct the first instance (thing-in-itself?). For example, in Haskell:
Prelude> str = str str

<interactive>:1:7: error:
    • Occurs check: cannot construct the infinite type: t1 ~ t -> t1

К какой Силы стороне принадлежишь ты?
Anonymous voting

В репо CPython переименовали главную ветку в main. Не знаю, зачем вам это знание 😅 Это переименование затронуло 1,4 тысячи пулл-реквестов и больше 700 форков. В процессе даже немножко сломался GitHub. В итоге инженерам из GitHub пришлось завершить переименование ветки в ручном режиме. https://github.community/t/renaming-python-master-branch-to-main-1-4k-prs-700-repositories-triggered-server-http-error-500/178090

Судя по расписанию, на PyCon US, который состоится уже совсем скоро в онлайне, будут выступления как минимум про pyjion (JIT-компилятор на основе .NET5) и Cinder (форк CPython с оптимизациями, используемый в Instagram). В целом, это объясняет почему такая активность в последнее время. А почему Pyston вышел из анабиоза именно сейчас — загадка. Видимо, просто совпадение. Расписание PyCon: https://us.pycon.org/2021/schedule/talks/ Собирается ли кто-нибудь его смотреть? Регистрация платная, если что.

Идея ускорения Python и правда как-то очень популярна в последнее время. Может оно всегда так было, а я просто не обращал внимания? В конце прошлого года вышел .NET5, который теперь кросс-платформенный, полностью открытый и независимый от Microsoft (по крайней мере формально). Да, теперь оно работает не только на Windows. Для справки: наиболее популярными языками для .NET являются C# и F#. Предельно упрощенная схема работы в .NET вот такая:
Код на C# -> CIL -> машинный код

CIL — это промежуточное представление, в которое сначала компилируются все .NET-языки. Фишка в том, что .NET умеет оптимизировать этот CIL и компилировать его в машинный код, в том числе и в режиме JIT. Есть такой проект — pyjion — который умеет конвертировать байт-код Python в CIL. Дальше хитрые механизмы .NET оптимизируют код и компилируют его на лету в эффективные машинные инструкции. А самая главная фишка — это не какой-то отдельный интерпретатор, это просто библиотека для ванильного CPython, так что весь ваш код должен работать точно так же. Всё, что нужно сделать — это установить на вашу машину .NET5 и добавить в начало программы (лучше даже до всех импортов) две строчки:
import pyjion
pyjion.enable()

Бабах! Дальше куски вашей программы будут в процессе выполнения компилироваться в машинные инструкции. Первый прогон кода может быть не таким быстрым из-за JIT-компиляции, зато последующие разы должны стать быстрее. На данный момент большого ускорения не обещают, но pyjion продолжает обрастать оптимизациями, специфичными для Python-кода, так что со временем получаемый машинный код будет более эффективным. Звучит невероятно круто, почитайте! https://tonybaloney.github.io/posts/running-python-on-dotnet-5-with-pyjion.html

Ну очевидно же #meme
Ну очевидно же #meme

Интересная и забавная статья про то, почему нативные расширения (это которые написаны на C/Rust/…) для Python иногда работают не так быстро, как мы ожидаем. В конце статьи получилось так, что можно и на чистом Python сделать быстро, если хорошенько разобрать задачу 😅 https://pythonspeed.com/articles/python-extension-performance/

Было бы интересно?
Anonymous voting

А нет ли у вас желания отвлечься от программирования на работе/учебе и ещё немного покодить для себя? Правила игры такие — я придумываю небольшую задачу (возможно даже интересную), мы все её решаем, а затем в процессе культурного перекидывания какашками без правил выясняем, чьё решение самое правильное и красивое. Язык — Python, само собой. Просто интересно понаблюдать за ходом мыслей других людей, как они подходят к решению и какими приёмами пользуются.

Стоило только вспомнить про Pyston, как они в тот же день выпускают новый релиз с полностью открытыми исходниками. Заявляют, что можно просто заменить бинарник python на pyston и получить ускорение на 30%. К сожалению, внесены некоторые низкоуровневые изменения, из-за чего предсобранные пакеты (wheels) для CPython не подойдут, придётся все C/Rust/…-зависимости пересобирать из исходников. https://blog.pyston.org/2021/05/05/pyston-v2-2-faster-and-open-source/