Python академия
7.07K subscribers
2.64K photos
4 videos
485 links
Учи Python быстро и легко.

Ежедневно публикуем практические задачи, разборы, готовые решения, объяснения логики, советы по алгоритмам.

✔ Подходит для прокачки навыков кодирования.

По всем вопросам @evgenycarter
Download Telegram
Библиотека showballstemmer

Работали когда-нибудь над поисковиками? Хороший поисковик должен много чего уметь, например, находить по минимальному запросу.

Некоторые используют pymorph2 (первая слишком много потребляет ресурсов), но ведь достаточно определять основу слова, а не начальную форму для нахождения большинства результатов.

Библиотека showballstemmer и занимается тем, что определяет основу слова, что делает поиск более точным. А главное — библиотека мало потребляет, а результат получается намного лучше.

В начале следует импортировать модуль требуемого языка, к примеру вот модули английского, русского и французского соответственно: EnglishStemmer, FrenchStemmer, RussianStemmer.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Потоковый ввод

Вы можете обрабатывать ввод от пользователя потоком. В таком случае для завершения надо воспользоваться специальной "командой" на Windows — Ctrl + D. Запустить потоковый ввод можно через библиотеку sys и метод stdin.

Если требуется получить и тут же обработать строку, то так и пишем: sys.stdin

Если надо в начале прочитать весь потоковый ввод, а затем обработать, то sys.stdin.readlines()

На картинке представлено 2 варианта.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
❤1
Обработка строки

Полезные функции для работы со строками. Python известен тем, что можно написать код в одну строчку использованием метода вместо перебора списком.

Перечислим наиболее полезные методы:

capitalize() - первая буква большая, остальные маленькие
strip() - удаление пробелов в начале и конце
center(int, chr='') - отцентрирует текст, int - нужное кол-во символов в строке, а chr - символ для добавления в начало и конец
swapcase() - заглавные буквы в прописные, маленькие в большие
lower() - преобразует к нижнему регистру
upper() - преобразует к верхнему регистру

При написании нейронок и ботов обязательно приводите все к нижнему регистру с помощью lower(). При написании ботов часто использую center(), для красивого вывода.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Модуль shutil

Очень смешное название, но библиотека является мощным инструментом для обработки файлов. В прошлом посте говорилось о модуль os. Надо учитывать, что многие задачи решить через него можно, но придется постараться.

Программисты комбинируют os и shutil для достижения наиболее красивого и эффективного кода.

shutil.copyfileobj(fsrc, fdst) - копирует один файл в другой.

shutil.copymode(fsrc, fdst) - копирует права доступа из одного файла в другой.

shutil.copystat(fsrc, fdst) - копирует дату последнего доступа и изменения из одного файла в другой.

Библиотека позволяет так же работать с архивами shutil.get_archive_formats(), чтобы узнать доступные для работы архивы.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
🤔 API работает — но как убедиться, что после очередного изменения оно продолжит работать корректно?

На открытом уроке разберём, как автоматизировать проверку FastAPI-приложений с помощью pytest и TestClient.

🔥Вы на практике:
— отправите запросы к приложению через TestClient;
— напишете тесты для корректных и некорректных данных;
— проверите HTTP-статусы и содержимое JSON;
— разберётесь, как подменять зависимости приложения для проверки нужного поведения.

Урок будет полезен Python-разработчикам, которые уже создают API, и начинающим разработчикам серверной части, которые пока тестируют приложения вручную.

Открытый урок проходит в преддверии старта курса «Python-разработчик».

⏰26 октября в 20:00 МСК. Принять участие: https://vk.cc/d2UR9D

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1
Модуль zipfile

Как говорилось ранее с zip может работать модуль shutil, но zipfile более многофункционален. С другой стороны он не так универсален и работает только с зипами. За все надо платить, не существует идеального способа для всего.

Для начала надо из zipfile импортировать ZipFile. И открыть файл ZipFile(file).

printdir() - вывод списка содержимого текстом для печати.

namelist() - вывод списка фалов списком.

open() - открыть файл внутри архива, далее работа проходит аналогично работе фалов.

Для практики на картинке показана программа выводящая красивый вложенный список файлов находящихся в архиве.

Больше возможностей можно узнать через help() или документацию.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
❤3
Итерирование с использованием функции enumerate

Функция range позволяет получить только индексы элементов списка. Функция enumerate генерирует кортежи, состоящие из двух элементов – индекса элемента и самого элемента. Эти кортежи можно распаковать еще в заголовке for
Получается короткий и понятный код!
В примере разберем как извлечь из списка элементы и их индекс, рис.1.

Еще одной полезной и крутой фишкой этой функции будет легкое создания счетчика. Более того, мы можем установить первоначальное значение счетчика, рис. 2.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
💻 Зависимости Python-проекта можно устанавливать и обновлять быстрее — если правильно настроить инструменты.

На открытом уроке разберём uv — современный инструмент для управления Python-проектами и зависимостями.

🔥 Вы на практике:
— изучите ключевые концепции uv;
— разберёте основные команды для управления проектом и зависимостями;
— узнаете, как использовать uv при сборке Docker-образов;
— поймёте, как применять uv в своих проектах.

В результате сможете увереннее работать с зависимостями, улучшить удобство разработки и ускорить сборку проекта.

Урок будет полезен всем, кто использует Python и хочет освоить современный инструмент uv.

Открытый урок проходит в преддверии старта курса «Python-разработчик. Продвинутый уровень».

⏰ 29 октября в 20:00 МСК. Участие бесплатно: https://vk.cc/d36wwr

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍1
Сборка exe файлов - pyinstaller

Если вы просто скопируете проект, то он не будет работать на других системах где нет установленного Python, а если есть, то возможно там отсутствуют нужные библиотеки. Но можно создать исполняемый файл exe, который запустится и без Python. Необходимо установить pyinstaller:

install pyinstaller

Затем перейти в командную строку, и перейти в нужную директорию с помощью команды cd. Далее напишем такой код:

--onefile --noconsole main.py

--onefile - означает, что будет только один исполняемый файл.

--noconsole - консоль не будет запускаться при открытии

main.py - файл, при запуске которого начинает работать ваша программа

В папке dist будет лежать нужный файл, остальные созданные папки можно удалить

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Разница между == и is

Недавно в чате наши подписчики затрагивали эту тему, поэтому мы решили разложить всё по полочкам, чтобы в дальнейшем не возникало вопросов.

Итак, оператор == проверяет равенство значений двух объектов. А оператор is в свою очередь проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.

Однако Python в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны некоторые казусы, как в примере.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Как округлить до тысячных в python?

Вы можете использовать round()

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Библиотека FuzzyWuzzy

Интересная и полезная библиотека поиска совпадений в тексте. Очень поможет вам при работе над общающимися ботами: голосовыми или текстовыми помощниками.

Разумеется, это один из инструментов, всегда можно использовать другой, но я лично пользуюсь этим.

Библиотеку следует установить:

install fuzzywuzzy

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Избегайте неоправданных циклов с коллекциями

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

Но в этом и проблема. Такой подход займет как минимум три строчки: объявление новой переменной, создание цикла и инструкции внутри него. При этом также снижается скорость работы скрипта.

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

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Дрон потерял связь, навигация дала сбой или просело питание. Как понять, что произошло в полёте и какие события привели к аварии? Ответы стоит искать в логах автопилота — важно уметь сопоставлять параметры и читать графики.

5 ноября в 20:00 на открытом уроке курса «Разработчик ПО для дронов: ArduPilot, C++ и ROS 2» разберёте логи реальных аварий БПЛА и настройку Failsafe-сценариев.

Узнаете, какие данные записывает автопилот и как выгрузить DataFlash-логи через Mission Planner. На примере двух-трёх случаев рассмотрите сбои навигации, питания и связи. Разберёте графики EKF, IMU и токов, чтобы восстановить последовательность событий и разобраться в возможных причинах отказа.

Затем перейдёте к аварийным сценариям в ArduPilot. Настроите стандартный Failsafe через графический интерфейс и проверите поведение дрона при потере связи в симуляторе SITL.

Урок подойдёт C/C++- и Python-разработчикам, инженерам встраиваемых систем и специалистам по БПЛА, которые хотят глубже понимать работу автопилота. После занятия вы сможете увереннее разбирать полётные логи и проверять настройки реакции на сбои в симуляторе.

Урок проведёт Игорь Морозов.

Зарегистрироваться: https://vk.cc/d3mb1k

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👎2👍1
"Быстрый" контейнер deque

Встроенных списков в Python иногда может не хватать, поэтому покажем одну хорошую альтернативу. Deque может быть реализован c помощью модуля collections.

Deque предпочтительнее, чем обычный список, в тех случаях, когда нам нужны более быстрые операции добавления и вытягивания элементо из обоих концов контейнера, поскольку deque обеспечивает линейную сложность O(1) для операций добавления и выталкивания по сравнению со списком, у которого сложность по времени для тех операций составляет O(n).

Также для deque есть возможность использовать стандартные функции по типу sum, min, max и тому подобные.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
🔥1
Как проверить существование переменной в Python?

Вы можете использовать in locals() или in globals(), чтобы проверить переменная существует в Python, разница только:

in locals() проверяет если переменная объявлена в локальной зоне видимости
in globals() проверяет если переменная объявлена в глобальной зоне видимости

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
🔥2
Контекстные менеджеры

Контекстные менеджеры позволяют задать поведение при работе с конструкцией with: при входе и выходе из блока. Это упрощает работу с ресурсами в части их захвата и освобождения; транзакциями, когда нужно либо полностью закончить транзакцию, либо откатить ее целиком.

Простейшей функцией, использующей данный принцип является функция open. Каждый раз, когда мы открываем файл, нам необходимо его закрыть, чтобы вытолкнуть выходные данные на диск (на самом деле Python вызывает метод close автоматически, но явное его использование является хорошим тоном).

Чтобы каждый раз не вызывать метод close мы можем воспользоваться контекстным менеджером функции open, который автоматически закроет файл после выхода из блока.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍2
Вывод значения по умолчанию для отсутствующего ключа словаря

Если вы обратитесь к несуществующему ключу словаря, то это вызовет исключение. Избежать этого можно, вызывая метод get. В примере метод выдает None (по умолчанию) или заданное значение аргумента.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Декораторы

Очень важная тема, с помощью декорирования можно писать очень удобные логи или существенно расширять функции.

Многие библиотеки работают с использованием декораторов: Flask и aiogram хорошие тому примеры.

Мы показываем лишь простой пример, возможности куда шире. Позже покажем пример использования с упоминаемыми выше библиотеками.

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍1
Удаление дубликатов в списке

Первое что приходит на ум — преобразовать список во множество и обратно. Это хороший и рабочий способ. Но если вам нужно сохранить последовательность, то этот способ не подойдёт. С этой задачей легко справится OrderedDict из модуля collections

📲 Мы в MAX

Подписывайтесь на канал 👉@pythonofff
👍2