Оказывается, скоро выйдет второе издание одной из лучших книг по Python, из тех, которые мне попадались - это книга Л. Рамальо "Python. К вершинам мастерства". У меня на полке стоит первое издание, поэтому второе покупать не планирую? но если нужна какая-то книжка уже не для изучения Python, а для более глубокого погружения, то я обычно советую ее (и книги Лутца, конечно).
На сайте издательства ( https://dmkpress.com/catalog/computer/programming/python/978-5-97060-885-2/ ) можно полистать оглавление и первую главу. Интересно, что в начале каждой главы есть раздел о том, что нового появилось в этом издании. Раньше я в книжках такого changelog-а не встречал.
#книги #python #программирование
На сайте издательства ( https://dmkpress.com/catalog/computer/programming/python/978-5-97060-885-2/ ) можно полистать оглавление и первую главу. Интересно, что в начале каждой главы есть раздел о том, что нового появилось в этом издании. Раньше я в книжках такого changelog-а не встречал.
#книги #python #программирование
После ковида и окончания мирного времени количество оффлайновых программерских встреч резко сократилось. К счастью, одно из давних Python-сообществ (Moscow Python Meetup, которое в молодости называлось Moscow Django Meetup, а потом расширило сферу своих интересов) начало восстанавливать древнюю традицию встречаться раз в месяц в какой-нибудь IT-компании, которая предоставляет площадку, и слушать несколько докладов, хоть как-то связанных с Python (но это не обязательно). После докладов обычно начинается неформальное общение, что тоже бывает интересно и полезно. Раз в месяц встречаться пока не очень получается, но уже почти.
Следующая встреча будет 23 марта в компании YADRO (там, между прочим, работает наш зав. каф :)). Темы докладов можете найти на странице регистрации, участие бесплатное. https://moscowdjango.timepad.ru/event/2353852/
#мероприятия #python #moscowpython
Следующая встреча будет 23 марта в компании YADRO (там, между прочим, работает наш зав. каф :)). Темы докладов можете найти на странице регистрации, участие бесплатное. https://moscowdjango.timepad.ru/event/2353852/
#мероприятия #python #moscowpython
moscowdjango.timepad.ru
Moscow Python Meetup №81 / События на TimePad.ru
Создание асинхронных приложений - это сложная тема в любом языке программирования, а в Python все еще усложняется наличием GIL (Global Interpreter Lock), который во многих случаях не позволяет использовать многоядерность процессоров. Но, как говорится, есть нюансы.
Недавно вышедшая на русском языке книга Мэттью Фаулера "Asyncio и конкурентное программирование на Python" эти самые нюансы раскрывает. В этой книге рассказывается и об асинхронном программировании, и о многопоточном, и о многопроцессном, и даже о том, как их скрещивать между собой (например, когда имеет смысл запускать асинхронный код в отдельном потоке). И вообще зачем нужны потоки в Python, если его интерпретатор по сути однопоточный (не все так однозначно).
Написал обзор этой книги себе в блог - https://jenyay.net/blog/2023/03/12/kniga-mehttyu-faulera-asyncio-i-konkurentnoe-programmirovanie-na-python/
Обзоры других книг можете найти на странице https://jenyay.net/Books/HomePage
#python #книги #asyncio #программирование
Недавно вышедшая на русском языке книга Мэттью Фаулера "Asyncio и конкурентное программирование на Python" эти самые нюансы раскрывает. В этой книге рассказывается и об асинхронном программировании, и о многопоточном, и о многопроцессном, и даже о том, как их скрещивать между собой (например, когда имеет смысл запускать асинхронный код в отдельном потоке). И вообще зачем нужны потоки в Python, если его интерпретатор по сути однопоточный (не все так однозначно).
Написал обзор этой книги себе в блог - https://jenyay.net/blog/2023/03/12/kniga-mehttyu-faulera-asyncio-i-konkurentnoe-programmirovanie-na-python/
Обзоры других книг можете найти на странице https://jenyay.net/Books/HomePage
#python #книги #asyncio #программирование
Очень неспешно продолжаю обновлять свои старые статьи про Matplotlib. Сегодня исправил статью Как обрабатывать события мыши и клавиатуры на графиках Matplotlib. Эта статья будет полезна, если вы захотите добавить немного интерактива для ваших графиков. Например, последний пример статье показывает, как можно добавлять на график метки с координатами (в системе координат осей), куда кликнул пользователь.
Дело близится к финалу, осталось поправить (читай, переписать) три статьи.
Полный список статей про Matplotlib можно найти на этой странице сайта.
#python #matplotlib #программирование
Дело близится к финалу, осталось поправить (читай, переписать) три статьи.
Полный список статей про Matplotlib можно найти на этой странице сайта.
#python #matplotlib #программирование
Из серии "Чего не будет в Python". Недавно отклонили PEP 582, в котором речь шла о том, чтобы в исходниках каждого проекта на Python предусмотреть специальную папку
Некоторые пакетные менеджеры, например новый PDM, уже даже заявили поддержку этой возможности (собственно, благодаря нему я и узнал об этом PEP).
#python #программирование
__pypackages__
, куда можно было бы устанавливать пакеты, а не устанавливать их на уровне системы, пользователя и не создавать виртуальное окружение. Одно из обоснований этого предложения заключалось в том, чтобы было проще осваиваться новичкам, не надо было бы их сразу грузить виртуальными окружениями и всем, что с этим связано. По сути предлагалось эту директорию добавлять в начало списка sys.path, чтобы интерпретатор Python при импорте пакетов в первую очередь искал их в __pypackages__
.Некоторые пакетные менеджеры, например новый PDM, уже даже заявили поддержку этой возможности (собственно, благодаря нему я и узнал об этом PEP).
#python #программирование
Python Enhancement Proposals (PEPs)
PEP 582 – Python local packages directory | peps.python.org
This PEP proposes extending the existing mechanism for setting up sys.path to include a new __pypackages__ directory, in addition to the existing locations. The new directory will be added at the start of sys.path, after the current working directory an...
Наконец-то дочитал книгу "Внутри CPython" Энтони Шоу и написал обзор о ней. Оба эти процесса у меня затянулись.
Если говорить коротко, то эта книга в первую очередь написана для тех, кто хочет разобраться в исходниках интерпретатора Python и влиться в ряды его разработчиков. Это такой беглый обзор по исходникам, чтобы можно было понять, где что лежит. Не уверен, что книга понадобится обычному разработчику на Python, но если хочется почитать чего-то экзотического, то вполне можно.
А более развернуто написал у себя в блоге - https://jenyay.net/blog/2023/04/29/pro-knigu-ehntoni-shou-vnutri-cpython/
#python #программирование #книги
Если говорить коротко, то эта книга в первую очередь написана для тех, кто хочет разобраться в исходниках интерпретатора Python и влиться в ряды его разработчиков. Это такой беглый обзор по исходникам, чтобы можно было понять, где что лежит. Не уверен, что книга понадобится обычному разработчику на Python, но если хочется почитать чего-то экзотического, то вполне можно.
А более развернуто написал у себя в блоге - https://jenyay.net/blog/2023/04/29/pro-knigu-ehntoni-shou-vnutri-cpython/
#python #программирование #книги
Переписал еще одну древнюю статью про использование библиотеки Matplotlib - "Применение объектно-ориентированного стиля" (https://jenyay.net/Matplotlib/Objects ).
В ней рассказывается о том, какие есть способы ее использования, начиная с устаревшего модуля pylab, использование функций из модуля matplotlib.pyplot и использование более низкоуровневых объектов Figure, Axes, Line2D, Legend и др.
И кажется, это последняя статья, которую нужно было обновить. Теперь можно писать новые, и у меня уже есть наброски для будущих статей на эту тему.
#программирование #python #matplotlib
В ней рассказывается о том, какие есть способы ее использования, начиная с устаревшего модуля pylab, использование функций из модуля matplotlib.pyplot и использование более низкоуровневых объектов Figure, Axes, Line2D, Legend и др.
И кажется, это последняя статья, которую нужно было обновить. Теперь можно писать новые, и у меня уже есть наброски для будущих статей на эту тему.
#программирование #python #matplotlib
✏️ Переписал еще одну статью про Matplotlib.
Изначально я собирался написать новую статью о способах переключения между окнами Matplotlib для того, чтобы рисовать графики в разных окнах не последовательно в порядке создания окон, а в произвольном порядке. В процессе написания я заметил, что о чем-то похожем я уже писал (и более того, в этом году я эту статью уже обновлял). Но это была статья лишь об одном из методов для выбора окон. В результате получился текст, в котором старая статья в немного измененной форме превратилась в один из разделов.
Новую версию по сути переписанной заново статьи вы можете прочитать по ссылке — Как рисовать графики в разных окнах.
Все статьи про рисование графиков в Python с помощью библиотеки Matplotlib можно увидеть по ссылке — Использование библиотеки Matplotlib.
#программирование #python #matplotlib
Изначально я собирался написать новую статью о способах переключения между окнами Matplotlib для того, чтобы рисовать графики в разных окнах не последовательно в порядке создания окон, а в произвольном порядке. В процессе написания я заметил, что о чем-то похожем я уже писал (и более того, в этом году я эту статью уже обновлял). Но это была статья лишь об одном из методов для выбора окон. В результате получился текст, в котором старая статья в немного измененной форме превратилась в один из разделов.
Новую версию по сути переписанной заново статьи вы можете прочитать по ссылке — Как рисовать графики в разных окнах.
Все статьи про рисование графиков в Python с помощью библиотеки Matplotlib можно увидеть по ссылке — Использование библиотеки Matplotlib.
#программирование #python #matplotlib
Начинаю читать вот эту книжку. Как только ее осилю, напишу что-нибудь про нее в блог.
PS. Давно не писал про книжки, потому что в последнее время переключился на чтение художественной литературы, а теперь переключаюсь обратно на нон-фикшн и всякое программерское.
#книги #python #программирование
PS. Давно не писал про книжки, потому что в последнее время переключился на чтение художественной литературы, а теперь переключаюсь обратно на нон-фикшн и всякое программерское.
#книги #python #программирование
Недавно прочитал книгу "Сверхбыстрый Python", которая посвящена вопросам оптимизации скриптов при обработке больших данных на Python. В ней автор приводит множество путей ускорения программ, когда скорость работы интерпретатора уже не устраивает, но все переписывать на Rust еще не хочется.
Более подробно о книге с разбором каждой главы написал в блоге - https://jenyay.net/blog/2024/03/02/kniga-tiago-antao-sverkhbystryjj-python/.
#книги #программирование #python
Более подробно о книге с разбором каждой главы написал в блоге - https://jenyay.net/blog/2024/03/02/kniga-tiago-antao-sverkhbystryjj-python/.
#книги #программирование #python
Обновил свою старую статью про алгоритм роя частиц, который предназначен для оптимизации функций. В этой статье помимо описания алгоритма прилагаются его реализации на Python и C#.
Статья была написана в далеком 2011 году, и поэтому исходники были рассчитаны на Python 2.x и на C# под .NET 2.0, и это вызывало сложности у читателей. Теперь обновил исходники на Python, а проекты на C# мигрировали на Visual Studio 2022 и .NET 4.8. Код на C# почти не менял. Еще, если раньше исходники лежали на сайте в виде файла zip, то теперь перенес их в два репозитория на github (отдельно реализацию на Python, отдельно на C#).
Когда брался за исправление статьи, думал, что сейчас будет желание полностью ее переписать, но как ни странно, такого желания не возникло, и в текст статьи вносил только небольшие косметические правки, а формулы сделал в виде картинок.
#алгоритмы #python #dotnet #оптимизация
Статья была написана в далеком 2011 году, и поэтому исходники были рассчитаны на Python 2.x и на C# под .NET 2.0, и это вызывало сложности у читателей. Теперь обновил исходники на Python, а проекты на C# мигрировали на Visual Studio 2022 и .NET 4.8. Код на C# почти не менял. Еще, если раньше исходники лежали на сайте в виде файла zip, то теперь перенес их в два репозитория на github (отдельно реализацию на Python, отдельно на C#).
Когда брался за исправление статьи, думал, что сейчас будет желание полностью ее переписать, но как ни странно, такого желания не возникло, и в текст статьи вносил только небольшие косметические правки, а формулы сделал в виде картинок.
#алгоритмы #python #dotnet #оптимизация
Вышел NumPy 2.0 - библиотека для математических расчетов в Python. В новой версии разработчики немного поломали обратную совместимость, так что аккуратнее с обновлением.
На opennet хорошо написано, что изменилось в новой версии.
#python #numpy
На opennet хорошо написано, что изменилось в новой версии.
#python #numpy
www.opennet.ru
Выпуск Python-библиотеки для научных вычислений NumPy 2.0.0
Доступен релиз Python-библиотеки для научных вычислений NumPy 2.0.0, ориентированной на работу с многомерными массивами и матрицами, а также предоставляющей большую коллекцию функций с реализацией различных алгоритмов, связанных с использованием матриц. NumPy…
Листая на днях документацию по модулю math в Python, неожиданно заметил, что помимо привычных констант e = 2.72 и pi = 3.14, начиная с Python 3.6, появилась еще одна константа tau = 2𝜋.
Полез читать Википедию на предмет того, что это за константа и зачем она нужна. Оказалось, что в начале 2000-х некоторые математики решили ввести константу 𝜏, равную отношению длины окружности к ее радиусу (в отличие отношения длины окружности к ее диаметру для 𝜋). Эта константа по их задумке должна заменить 𝜋 в большинстве задач.
Добавление 𝜏 они объясняют тем, что 𝜋 - не самый удачный выбор для одной из основополагающих констант, потому что поворот на угол 𝜋 - это поворот только лишь на половину окружности, и из-за этого во многих выражениях встречается сочетание 2𝜋, и постоянно приходится то умножать, то делить на 2. Например, круговая частота ω=2𝜋f, а с новой константой полный оборот - это 𝜏 радиан, половина окружности - 0.5𝜏 и т.д. Тогда та же круговая частота была бы равна ω=𝜏f, а формулу Эйлера можно записать как exp(i𝜏) = 1.
В 2010 даже появился манифест в поддержку 𝜏 - https://tauday.com/tau_manifesto.pdf.
Как я понимаю, эта идея до сих пор остается еще достаточно маргинальной, и из школьных учебников пока никто не собирается убирать упоминание 𝜋 в пользу 𝜏. Но вообще любопытно.
#математика #python
Полез читать Википедию на предмет того, что это за константа и зачем она нужна. Оказалось, что в начале 2000-х некоторые математики решили ввести константу 𝜏, равную отношению длины окружности к ее радиусу (в отличие отношения длины окружности к ее диаметру для 𝜋). Эта константа по их задумке должна заменить 𝜋 в большинстве задач.
Добавление 𝜏 они объясняют тем, что 𝜋 - не самый удачный выбор для одной из основополагающих констант, потому что поворот на угол 𝜋 - это поворот только лишь на половину окружности, и из-за этого во многих выражениях встречается сочетание 2𝜋, и постоянно приходится то умножать, то делить на 2. Например, круговая частота ω=2𝜋f, а с новой константой полный оборот - это 𝜏 радиан, половина окружности - 0.5𝜏 и т.д. Тогда та же круговая частота была бы равна ω=𝜏f, а формулу Эйлера можно записать как exp(i𝜏) = 1.
В 2010 даже появился манифест в поддержку 𝜏 - https://tauday.com/tau_manifesto.pdf.
Как я понимаю, эта идея до сих пор остается еще достаточно маргинальной, и из школьных учебников пока никто не собирается убирать упоминание 𝜋 в пользу 𝜏. Но вообще любопытно.
#математика #python
Несколько дней назад вышла новая версия библиотеки для создания пользовательского интерфейса на Python - wxPython 4.2.2. Именно на основе этой библиотеки в OutWiker создается GUI. С момента предыдущей версии wxPython прошло больше года. На главной странице официального сайта почему-то еще нет новости о релизе, поэтому пока не знаю, что там поменялось, но как минимум теперь эта библиотека должна собираться для Python 3.12, а то с прошлой версией были проблемы. Еще я надеюсь, что в эту версию попало исправление, которое фиксило один неприятный баг с некоторыми юникодными символами. Из-за этого бага для сборки OutWiker под Windows я использовал пропатченную версию wxPython.
Еще новая версия wxPython символична тем, что незадолго до релиза основной разработчик Robin Dunn отошел от дел и передал права на проект другим наиболее активным разработчикам. Хочется надеяться, что релизы теперь будут выходить почаще.
#python #wxpython #программирование
Еще новая версия wxPython символична тем, что незадолго до релиза основной разработчик Robin Dunn отошел от дел и передал права на проект другим наиболее активным разработчикам. Хочется надеяться, что релизы теперь будут выходить почаще.
#python #wxpython #программирование
Вышел #Python 3.13. Про основные изменения можно почитать, например, тут - https://www.opennet.ru/opennews/art.shtml?num=62009
Самое заметное изменение - это новая версия командного режима работы (REPL), он действительно стал более дружелюбным и симпатичным. Остальные изменения более тонкие или являются заделом на будущее (зачатки JIT и первые шаги к избавлению от GIL).
В книге, которую пишу, я уже все примеры тестировал на Python 3.13 beta и как раз с новой консолью, но картинки с установкой Python под Винду теперь надо обновить, чтобы там не маячила надпись "beta".
Самое заметное изменение - это новая версия командного режима работы (REPL), он действительно стал более дружелюбным и симпатичным. Остальные изменения более тонкие или являются заделом на будущее (зачатки JIT и первые шаги к избавлению от GIL).
В книге, которую пишу, я уже все примеры тестировал на Python 3.13 beta и как раз с новой консолью, но картинки с установкой Python под Винду теперь надо обновить, чтобы там не маячила надпись "beta".
www.opennet.ru
Выпуск языка программирования Python 3.13
После года разработки опубликован значительный выпуск языка программирования Python 3.13. Новая ветка будет поддерживаться в течение полутора лет, после чего ещё три с половиной года для неё будут формироваться исправления с устранением уязвимостей.
В книге про Python, которую пишу, уже появилось упоминание Python 3.14. Дело в том, что в будущей версии, которая выйдет только во второй половине 2025 года (обычно в октябре), в класс Path из модуля pathlib наконец-то добавили методы copy() и copy_into() для копирования файлов и папок. Не мог не упомянуть этого радостного факта и не написать пару примеров с их использованием (они уже даже работают!).
Для установки Python 3.14, который сейчас находится еще в состоянии глубокой альфы, использовал pyenv.
#книга_про_python #python #программирование
Для установки Python 3.14, который сейчас находится еще в состоянии глубокой альфы, использовал pyenv.
#книга_про_python #python #программирование
В Python были u-строки (не актуальные с выходом Python 3), сейчас есть r-строки, b-строки и f-строки. И, возможно, теперь еще будут t-строки. PEP 750 еще не приняли, но идея интересная. Это очередные шаблонные строки, которые можно использовать более безопасно, чем f-строки, благодаря проверке того, какие значения параметров туда пытаются подставить.
#python #программирование
#python #программирование
Python Enhancement Proposals (PEPs)
PEP 750 – Template Strings | peps.python.org
This PEP introduces template strings for custom string processing.
Вчера ходил на очередной Moscow Python Meetup, который проходил на этот раз в офисе МТС около метро Технопарк. Традиционно, в рамках митапа было три доклада.
Первый доклад был про то, как делали систему анализа документов, находящихся в открытом доступе в корпоративной сети. Надо было быстро анализировать миллионы документов и помечать их метками, говорящие о том, что это за документ (договор, служебная записка, художественная книжка), кто и какие компании в документе упоминаются.
Второй доклад был про архитектуру распределенной системы и про то, как реализовывали паттерн "Сага", предназначенный для обеспечения надежных сложных транзакций, которые на любом внутреннем шаге могут сломаться, например, из-за ненадежной сети, или их могут отменить.
И третий доклад, который мне понравился больше всего, был про то, как разрабатывали ботов (в докладе их называли роботами), которые программируются для взаимодействия с десктопными приложениями. Это нужно, чтобы автоматизировать такие действия как нажатия кнопок, заполнение полей и т.п. При этом софт, с которым взаимодействуют роботы, сильно отличаются по принципам построения интерфейса, и где-то можно было находить нужный элемент управления по его дескриптору, а где-то нужная кнопка распознавалась по внешнему виду, сравнивая со скриншотом.
#moscowpython #python #программирование
Первый доклад был про то, как делали систему анализа документов, находящихся в открытом доступе в корпоративной сети. Надо было быстро анализировать миллионы документов и помечать их метками, говорящие о том, что это за документ (договор, служебная записка, художественная книжка), кто и какие компании в документе упоминаются.
Второй доклад был про архитектуру распределенной системы и про то, как реализовывали паттерн "Сага", предназначенный для обеспечения надежных сложных транзакций, которые на любом внутреннем шаге могут сломаться, например, из-за ненадежной сети, или их могут отменить.
И третий доклад, который мне понравился больше всего, был про то, как разрабатывали ботов (в докладе их называли роботами), которые программируются для взаимодействия с десктопными приложениями. Это нужно, чтобы автоматизировать такие действия как нажатия кнопок, заполнение полей и т.п. При этом софт, с которым взаимодействуют роботы, сильно отличаются по принципам построения интерфейса, и где-то можно было находить нужный элемент управления по его дескриптору, а где-то нужная кнопка распознавалась по внешнему виду, сравнивая со скриншотом.
#moscowpython #python #программирование