Работает — не трожь: зачем обновлять Python в долгоживущих проектах
Всем привет! Меня зовут Сергей Яхницкий. Я пишу на Python уже больше шести лет, техлид в Яндекс Такси, Python‑евангелист и член Python‑комитета Яндекса (аналог Python Steering Council).
Человек я простой, звёзд с Гитхаба не хватал: до того, как я устроился в Такси, я мирно писал маленькие бэкенды на Python. А потом меня прорвало: кодогенерации, CI/CD, кучи тестов, монорепа и прочее. Вот тут‑то моя питоничья душа и воспряла. Решил я всё автоматизировать, обновить всё, что движется, а что не движется — подвигать и обновить. Из этого вышел мой рассказ.
Этот пост широко освещает изменения последних нескольких лет и куда в принципе движется Python. Пост будет полезен как новичкам, которые только ещё изучают Python, так и опытным специалистам, которые думают о языке разработки в долгосрочной перспективе.
https://habr.com/ru/companies/yandex/articles/828956/
#python
👉 @python_real
Всем привет! Меня зовут Сергей Яхницкий. Я пишу на Python уже больше шести лет, техлид в Яндекс Такси, Python‑евангелист и член Python‑комитета Яндекса (аналог Python Steering Council).
Человек я простой, звёзд с Гитхаба не хватал: до того, как я устроился в Такси, я мирно писал маленькие бэкенды на Python. А потом меня прорвало: кодогенерации, CI/CD, кучи тестов, монорепа и прочее. Вот тут‑то моя питоничья душа и воспряла. Решил я всё автоматизировать, обновить всё, что движется, а что не движется — подвигать и обновить. Из этого вышел мой рассказ.
Этот пост широко освещает изменения последних нескольких лет и куда в принципе движется Python. Пост будет полезен как новичкам, которые только ещё изучают Python, так и опытным специалистам, которые думают о языке разработки в долгосрочной перспективе.
https://habr.com/ru/companies/yandex/articles/828956/
#python
👉 @python_real
Python's lambda functions
Have you ever seen the word lambda used in Python?
That's called a "lambda expression" and it defines a "lambda function".
https://www.pythonmorsels.com/lambda-expressions/
#python
👉 @python_real
Have you ever seen the word lambda used in Python?
sorted_by_values = sorted(items, key=lambda i: i[1])
That's called a "lambda expression" and it defines a "lambda function".
https://www.pythonmorsels.com/lambda-expressions/
#python
👉 @python_real
Pythonmorsels
Python's lambda functions
What are lambda expressions and how are they used in Python?
Как оптимизировать аккумуляторную батарею
Сразу оговорюсь, что в статье речь пойдёт преимущественно о теоретической стороне проектирования батарей, нежели о практических рекомендациях по исправлению их технических проблем — жаль разочаровывать тех, кого больше интересует последнее.
Представьте, что работаете инженером в компании по производству электромобилей, и ваш начальник обращается к вам со следующими словами: «Джереми, у нас проблема! (и да, зовут вас Джереми). Всё эти чёртовы батареи! В машине их слишком много, что получается очень накладно. Но при этом мы хотим, чтобы клиенты могли спокойно проехать 400 миль на одном заряде».
Что вы в этой ситуации сделаете? Как вы оптимизируете батареи? Это же чёрный магический ящик, не так ли? Не так. Используйте симуляцию.
https://habr.com/ru/companies/ruvds/articles/833472/
original https://github.com/ionworks/how-to-debug-your-battery?tab=readme-ov-file
#python
👉 @python_real
Сразу оговорюсь, что в статье речь пойдёт преимущественно о теоретической стороне проектирования батарей, нежели о практических рекомендациях по исправлению их технических проблем — жаль разочаровывать тех, кого больше интересует последнее.
Представьте, что работаете инженером в компании по производству электромобилей, и ваш начальник обращается к вам со следующими словами: «Джереми, у нас проблема! (и да, зовут вас Джереми). Всё эти чёртовы батареи! В машине их слишком много, что получается очень накладно. Но при этом мы хотим, чтобы клиенты могли спокойно проехать 400 миль на одном заряде».
Что вы в этой ситуации сделаете? Как вы оптимизируете батареи? Это же чёрный магический ящик, не так ли? Не так. Используйте симуляцию.
https://habr.com/ru/companies/ruvds/articles/833472/
original https://github.com/ionworks/how-to-debug-your-battery?tab=readme-ov-file
#python
👉 @python_real
Что происходит, когда запускаешь «Hello World» в Linux
Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.
Вот как это выглядит в командной строке:
Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
https://habr.com/ru/companies/ruvds/articles/753506/
#python
👉 @python_real
Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.
print("hello world")
Вот как это выглядит в командной строке:
$ python3 hello.py
hello world
Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
https://habr.com/ru/companies/ruvds/articles/753506/
#python
👉 @python_real
Выполняйте загрузку Excel-файлов в Python в 1000 раз быстрее
Как пользователь Python, я часто взаимодействую с файлами Excel для работы с данными, поскольку профессионалы предпочитают обмениваться информацией в форматах Excel или CSV. Однако скорость работы Python с файлами Excel довольно низкая.
Рассмотрим пять методов загрузки данных в Python. К концу статьи вы узнаете, как добиться увеличения скорости на три порядка, невероятно ускорив процесс загрузки.
https://python.plainenglish.io/do-you-read-excel-files-with-python-there-is-a-1000x-faster-way-72a15964d30a?gi=a23a0755357a
#python
👉 @python_real
Как пользователь Python, я часто взаимодействую с файлами Excel для работы с данными, поскольку профессионалы предпочитают обмениваться информацией в форматах Excel или CSV. Однако скорость работы Python с файлами Excel довольно низкая.
Рассмотрим пять методов загрузки данных в Python. К концу статьи вы узнаете, как добиться увеличения скорости на три порядка, невероятно ускорив процесс загрузки.
https://python.plainenglish.io/do-you-read-excel-files-with-python-there-is-a-1000x-faster-way-72a15964d30a?gi=a23a0755357a
#python
👉 @python_real
Как использовать операторы break, continue и pass при работе с циклами в Python
Использование циклов for и while в Python позволяет автоматизировать и эффективно повторять задачи.
Но иногда внешний фактор может повлиять на выполнение программы. В таких случаях вам может понадобиться полностью выйти из цикла, пропустить часть цикла перед его продолжением или проигнорировать этот внешний фактор. Эти действия можно выполнить с помощью операторов break, continue и pass.
https://www.digitalocean.com/community/tutorials/how-to-use-break-continue-and-pass-statements-when-working-with-loops-in-python-3
#python
👉 @python_real
Использование циклов for и while в Python позволяет автоматизировать и эффективно повторять задачи.
Но иногда внешний фактор может повлиять на выполнение программы. В таких случаях вам может понадобиться полностью выйти из цикла, пропустить часть цикла перед его продолжением или проигнорировать этот внешний фактор. Эти действия можно выполнить с помощью операторов break, continue и pass.
https://www.digitalocean.com/community/tutorials/how-to-use-break-continue-and-pass-statements-when-working-with-loops-in-python-3
#python
👉 @python_real
Алгоритмы на Python
Включает в себя массу алгоритмов от арифметического анализа до блокчейна и структур данных.
https://github.com/TheAlgorithms/Python
#python
👉 @python_real
Включает в себя массу алгоритмов от арифметического анализа до блокчейна и структур данных.
https://github.com/TheAlgorithms/Python
#python
👉 @python_real
6 вещей, о которых вы, вероятно, не знали, что можно делать с Pandas
Со своими мощными и гибкими функциями Pandas стал незаменимым инструментом для ученых данных и аналитиков.
Ссылаясь на статистику, опубликованную PyPI, вы можете себе представить, что Pandas загружают более 3 миллионов раз в день?
Конечно, эта статистика дает мало информации о количестве пользователей. Тем не менее, она подчеркивает широкую популярность библиотеки.
Хотя многие пользователи уже знакомы с её основными функциями, в Pandas всё же есть множество скрытых возможностей, о которых вы, возможно, не знаете.
Итак, в этом блоге я поделюсь шестью интересными вещами, которые вы можете сделать с помощью Pandas, чтобы улучшить свой анализ данных.
https://towardsdatascience.com/6-things-that-you-probably-didnt-know-you-could-do-with-pandas-d365b3362a55
#python
👉 @python_real
Со своими мощными и гибкими функциями Pandas стал незаменимым инструментом для ученых данных и аналитиков.
Ссылаясь на статистику, опубликованную PyPI, вы можете себе представить, что Pandas загружают более 3 миллионов раз в день?
Конечно, эта статистика дает мало информации о количестве пользователей. Тем не менее, она подчеркивает широкую популярность библиотеки.
Хотя многие пользователи уже знакомы с её основными функциями, в Pandas всё же есть множество скрытых возможностей, о которых вы, возможно, не знаете.
Итак, в этом блоге я поделюсь шестью интересными вещами, которые вы можете сделать с помощью Pandas, чтобы улучшить свой анализ данных.
https://towardsdatascience.com/6-things-that-you-probably-didnt-know-you-could-do-with-pandas-d365b3362a55
#python
👉 @python_real
Полноценный API на Django REST Framework: легкая разработка, автодокументация и быстрый деплой
Сегодня мы погрузимся в процесс создания собственного API на Django с использованием мощного инструмента — Django REST Framework (DRF). Этот фреймворк предоставляет полный набор инструментов для разработки API: маршрутизация, сериализация данных, обработка запросов и формирование ответов. DRF значительно упрощает взаимодействие с клиентами через HTTP, поддерживая такие методы, как GET, POST, PUT и DELETE.
Однако, в отличие от FastAPI, Django REST Framework не включает встроенный инструмент для автодокументирования API. Мы легко решим эту задачу, воспользовавшись расширением drf‑spectacular, которое генерирует спецификации API в формате OpenAPI 3.0. Это позволит интегрировать интерфейсы, такие как Swagger и Redoc, для удобного тестирования и наглядной визуализации документации.
https://habr.com/ru/companies/amvera/articles/843232/
#python
👉 @python_real
Сегодня мы погрузимся в процесс создания собственного API на Django с использованием мощного инструмента — Django REST Framework (DRF). Этот фреймворк предоставляет полный набор инструментов для разработки API: маршрутизация, сериализация данных, обработка запросов и формирование ответов. DRF значительно упрощает взаимодействие с клиентами через HTTP, поддерживая такие методы, как GET, POST, PUT и DELETE.
Однако, в отличие от FastAPI, Django REST Framework не включает встроенный инструмент для автодокументирования API. Мы легко решим эту задачу, воспользовавшись расширением drf‑spectacular, которое генерирует спецификации API в формате OpenAPI 3.0. Это позволит интегрировать интерфейсы, такие как Swagger и Redoc, для удобного тестирования и наглядной визуализации документации.
https://habr.com/ru/companies/amvera/articles/843232/
#python
👉 @python_real
Как использовать PyScript - фреймворк для фронтенда на Python
В последние годы популярность языка Python значительно возросла. Он имеет широкий спектр применения - от наиболее популярного использования в искусственном интеллекте до Data Science, робототехники и скриптинга.
В сфере веб-разработки Python используется в основном на бэкенде с такими фреймворками, как Django и Flask.
https://www.freecodecamp.org/news/pyscript-python-front-end-framework/
#python
👉 @python_real
В последние годы популярность языка Python значительно возросла. Он имеет широкий спектр применения - от наиболее популярного использования в искусственном интеллекте до Data Science, робототехники и скриптинга.
В сфере веб-разработки Python используется в основном на бэкенде с такими фреймворками, как Django и Flask.
https://www.freecodecamp.org/news/pyscript-python-front-end-framework/
#python
👉 @python_real
freeCodeCamp.org
How to Use PyScript – A Python Frontend Framework
By Ifihanagbara Olusheye Python has grown in popularity immensely in recent years. It has a wide range of applications, from its most popular use in Artificial Intelligence, to Data Science, Robotics, and Scripting. In the web development field, Pyth...
Вещи, которые я узнал о создании CLI-инструментов на Python:
Я создаю много командных инструментов на Python. Это стало моим любимым способом быстро превращать код в что-то, что я могу использовать сам, а также упаковывать для других людей.
https://simonwillison.net/2023/Sep/30/cli-tools-python/
#python
👉 @python_real
Я создаю много командных инструментов на Python. Это стало моим любимым способом быстро превращать код в что-то, что я могу использовать сам, а также упаковывать для других людей.
https://simonwillison.net/2023/Sep/30/cli-tools-python/
#python
👉 @python_real
Simon Willison’s Weblog
Things I’ve learned about building CLI tools in Python
I build a lot of command-line tools in Python. It’s become my favorite way of quickly turning a piece of code into something I can use myself and package up …
Руководство по сериализации данных в Python
Будь вы дата-сайентист, работающий с большими данными в распределенном кластере, бэкенд-инженер, создающий масштабируемые микросервисы, или фронтенд-разработчик, использующий веб-API, вы должны понимать, что такое сериализация данных. В этом подробном руководстве вы пойдете дальше XML и JSON и исследуете несколько форматов данных, которые можно использовать для сериализации данных в Python. Вы рассмотрите их в зависимости от различных сценариев использования, познакомитесь с их уникальными категориями.
К концу этого руководства вы глубоко разберетесь в различных форматах обмена данными. Вы освоите возможность сохранять и передавать объекты с состоянием, эффективно делая их "бессмертными" и переносимыми во времени и пространстве. В конце концов, вы научитесь отправлять исполняемый код по сети, открывая возможности удаленных вычислений и распределенной обработки.
https://realpython.com/python-serialize-data/
#python
👉 @python_real
Будь вы дата-сайентист, работающий с большими данными в распределенном кластере, бэкенд-инженер, создающий масштабируемые микросервисы, или фронтенд-разработчик, использующий веб-API, вы должны понимать, что такое сериализация данных. В этом подробном руководстве вы пойдете дальше XML и JSON и исследуете несколько форматов данных, которые можно использовать для сериализации данных в Python. Вы рассмотрите их в зависимости от различных сценариев использования, познакомитесь с их уникальными категориями.
К концу этого руководства вы глубоко разберетесь в различных форматах обмена данными. Вы освоите возможность сохранять и передавать объекты с состоянием, эффективно делая их "бессмертными" и переносимыми во времени и пространстве. В конце концов, вы научитесь отправлять исполняемый код по сети, открывая возможности удаленных вычислений и распределенной обработки.
https://realpython.com/python-serialize-data/
#python
👉 @python_real
Abstract Factory Design Pattern in Python
https://stackabuse.com/abstract-factory-design-pattern-in-python/
#python
👉 @python_real
https://stackabuse.com/abstract-factory-design-pattern-in-python/
#python
👉 @python_real
Генерация изображений с помощью DALL-E и API OpenAI
Опишите любое изображение, а затем позвольте компьютеру создать его за вас. То, что еще несколько лет назад казалось футуристическим, стало реальностью благодаря достижениям в области нейронных сетей и моделей скрытой диффузии (LDM). DALL-E от OpenAI произвел фурор благодаря удивительному генеративному искусству и реалистичным изображениям, которые люди создают с его помощью.
https://realpython.com/generate-images-with-dalle-openai-api/
#python
👉 @python_real
Опишите любое изображение, а затем позвольте компьютеру создать его за вас. То, что еще несколько лет назад казалось футуристическим, стало реальностью благодаря достижениям в области нейронных сетей и моделей скрытой диффузии (LDM). DALL-E от OpenAI произвел фурор благодаря удивительному генеративному искусству и реалистичным изображениям, которые люди создают с его помощью.
https://realpython.com/generate-images-with-dalle-openai-api/
#python
👉 @python_real
Выбор хорошего формата файла для Pandas
Прежде чем обрабатывать данные с помощью Pandas, их нужно загрузить (с диска или удаленного хранилища). Pandas поддерживает множество форматов данных: CSV, JSON, Parquet и многие другие.
https://pythonspeed.com/articles/best-file-format-for-pandas/
#python
👉 @python_real
Прежде чем обрабатывать данные с помощью Pandas, их нужно загрузить (с диска или удаленного хранилища). Pandas поддерживает множество форматов данных: CSV, JSON, Parquet и многие другие.
import sys
import pandas as pd
df = pd.read_csv(
sys.argv[1],
dtype={
"route_id": "category",
"direction_id": "category",
"point_type": "category",
"standard_type": "category",
},
parse_dates=["service_date", "scheduled", "actual"],
)
https://pythonspeed.com/articles/best-file-format-for-pandas/
#python
👉 @python_real
Создание программы записи экрана с помощью Python
Python - это широко распространенный язык общего назначения. Он позволяет выполнять различные задачи. Одна из них - запись видео. Для этого в нем есть модуль pyautogui. Этот модуль вместе с NumPy и OpenCV позволяет манипулировать и сохранять изображения (в данном случае скриншот)
https://www.geeksforgeeks.org/create-a-screen-recorder-using-python/
#python
👉 @python_real
Python - это широко распространенный язык общего назначения. Он позволяет выполнять различные задачи. Одна из них - запись видео. Для этого в нем есть модуль pyautogui. Этот модуль вместе с NumPy и OpenCV позволяет манипулировать и сохранять изображения (в данном случае скриншот)
https://www.geeksforgeeks.org/create-a-screen-recorder-using-python/
#python
👉 @python_real
GeeksforGeeks
Create a Screen recorder using Python - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
Ловушки, в которые попадают неопытные Python-разработчики
В основном, Python стремится быть чистым и последовательным языком, который избегает сюрпризов. Однако есть несколько случаев, которые могут быть запутанными для новичков.
Некоторые из этих случаев намеренны, но могут показаться неожиданными. Некоторые, возможно, можно рассматривать как недостатки языка. В целом, это сборник потенциально сложного поведения, которое может показаться странным на первый взгляд, но становится понятным, как только вы осознаете причину неожиданности.
https://docs.python-guide.org/writing/gotchas/
#python
👉 @python_real
В основном, Python стремится быть чистым и последовательным языком, который избегает сюрпризов. Однако есть несколько случаев, которые могут быть запутанными для новичков.
Некоторые из этих случаев намеренны, но могут показаться неожиданными. Некоторые, возможно, можно рассматривать как недостатки языка. В целом, это сборник потенциально сложного поведения, которое может показаться странным на первый взгляд, но становится понятным, как только вы осознаете причину неожиданности.
https://docs.python-guide.org/writing/gotchas/
#python
👉 @python_real
Как мы решали вопрос многоязычности в боте
Ранее в статье Как мы запускали серьезный проект в Telegram я рассказал общую информацию о моем телеграм-бот проекте World for Life Bot
В этой статье я поделюсь опытом реализации многоязычности, расскажу о принципах выбора языков, которыми я руководствовался, технических аспектах реализации и принятых решениях.
https://habr.com/ru/articles/785582/
#python
👉 @python_real
Ранее в статье Как мы запускали серьезный проект в Telegram я рассказал общую информацию о моем телеграм-бот проекте World for Life Bot
В этой статье я поделюсь опытом реализации многоязычности, расскажу о принципах выбора языков, которыми я руководствовался, технических аспектах реализации и принятых решениях.
https://habr.com/ru/articles/785582/
#python
👉 @python_real
Возможности для молодых людей в «Алабуге»
В особой экономической зоне «Алабуга» активно развивается лидерская программа «100 Лидеров». В ней могут поучаствовать молодые специалисты от 19 до 29 лет.
У участников есть возможность познакомиться с топ-менеджерами компании, поиграть в бизнес-игры, пройти собеседования с реальным шансом трудоустройства в компанию «Алабуга».
Питание и проживание за счет компании.
Работа в «Алабуге» - это зарплата от 78 до 200 тысяч рублей и участие в реализации проектов мирового уровня.
Следующий поток - с 28 по 31 октября!
Заявку можно подать на сайте.
В особой экономической зоне «Алабуга» активно развивается лидерская программа «100 Лидеров». В ней могут поучаствовать молодые специалисты от 19 до 29 лет.
У участников есть возможность познакомиться с топ-менеджерами компании, поиграть в бизнес-игры, пройти собеседования с реальным шансом трудоустройства в компанию «Алабуга».
Питание и проживание за счет компании.
Работа в «Алабуге» - это зарплата от 78 до 200 тысяч рублей и участие в реализации проектов мирового уровня.
Следующий поток - с 28 по 31 октября!
Заявку можно подать на сайте.
Параллелизм, конкурентность и AsyncIO в Python — на примерах
Эта статья рассматривает, как ускорить операции, ограниченные процессором (CPU-bound) и вводом-выводом (IO-bound), с помощью многопроцессорности, многопоточности и AsyncIO.
https://testdriven.io/blog/python-concurrency-parallelism/
#python
👉 @python_real
Эта статья рассматривает, как ускорить операции, ограниченные процессором (CPU-bound) и вводом-выводом (IO-bound), с помощью многопроцессорности, многопоточности и AsyncIO.
# tasks.py
import os
from multiprocessing import current_process
from threading import current_thread
import requests
def make_request(num):
# io-bound
pid = os.getpid()
thread_name = current_thread().name
process_name = current_process().name
print(f"{pid} - {process_name} - {thread_name}")
requests.get("https://httpbin.org/ip")
async def make_request_async(num, client):
# io-bound
pid = os.getpid()
thread_name = current_thread().name
process_name = current_process().name
print(f"{pid} - {process_name} - {thread_name}")
await client.get("https://httpbin.org/ip")
def get_prime_numbers(num):
# cpu-bound
pid = os.getpid()
thread_name = current_thread().name
process_name = current_process().name
print(f"{pid} - {process_name} - {thread_name}")
numbers = []
prime = [True for i in range(num + 1)]
p = 2
while p * p <= num:
if prime[p]:
for i in range(p * 2, num + 1, p):
prime[i] = False
p += 1
prime[0] = False
prime[1] = False
for p in range(num + 1):
if prime[p]:
numbers.append(p)
return numbers
https://testdriven.io/blog/python-concurrency-parallelism/
#python
👉 @python_real
Ваши генераторные выражения сломаны: чиним и разбираемся
Всем привет! Меня зовут Ефимов Михаил, я профессиональный разработчик с 2010 года и начинающий contributor в CPython.
Итак, название статьи говорит, что генераторные выражения сломаны. О чем вообще речь? Посмотрим на такой код, не содержащий никаких import:
https://habr.com/ru/articles/853864/
#python
👉 @python_real
Всем привет! Меня зовут Ефимов Михаил, я профессиональный разработчик с 2010 года и начинающий contributor в CPython.
Итак, название статьи говорит, что генераторные выражения сломаны. О чем вообще речь? Посмотрим на такой код, не содержащий никаких import:
g = (x for x in range(10))
g.gi_frame.f_locals['.0'] = range(20)
list(g)
https://habr.com/ru/articles/853864/
#python
👉 @python_real
Хабр
Ваши генераторные выражения сломаны: чиним и разбираемся
Всем привет! Меня зовут Ефимов Михаил, я профессиональный разработчик с 2010 года и начинающий contributor в CPython. Итак, название статьи говорит, что генераторные выражения сломаны. О чем вообще...