Простой, но мощный веб-фреймворк
Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub.
Flask предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. А коммьюнити предоставляет множество расширений для фреймворка.
Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу
#модули
Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub.
Flask предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. А коммьюнити предоставляет множество расширений для фреймворка.
Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу
http://localhost:5000/
и посмотреть результат. #модули
Библиотека FuzzyWuzzy
Интересная и полезная библиотека поиска совпадений в тексте. Очень поможет вам при работе над общающимися ботами: голосовыми или текстовыми помощниками.
Разумеется, это один из инструментов, всегда можно использовать другой, но я лично пользуюсь этим.
Библиотеку следует установить:
Несколько примеров работы библиотеки на картинке.
#python #библиотеки
Интересная и полезная библиотека поиска совпадений в тексте. Очень поможет вам при работе над общающимися ботами: голосовыми или текстовыми помощниками.
Разумеется, это один из инструментов, всегда можно использовать другой, но я лично пользуюсь этим.
Библиотеку следует установить:
install fuzzywuzzy
Несколько примеров работы библиотеки на картинке.
#python #библиотеки
Библиотека Progressbar
Думали ли вы когда-нибудь над полоской прогресса? Иногда бывает полезно добавить в код отображение прогресса, чтобы пользователь не беспокоился, что программа не отвечает.
В первую очередь это касается синхронных приложений. Ведь, если наш код выполняет что-то одно, то на другие действия он не будет реагировать, ставя их в очередь. Ну и еще один вариант показывать, что программа не виснет, а думает, при этом не обязательно показывать прогресс.
Все это очень интересно, но если мы начнем самостоятельно писать полосу прогресса, то отвлечемся от основного кода. К счастью, в python есть библиотека Progressbar, которая делает все за нас.
#python #библиотеки
Думали ли вы когда-нибудь над полоской прогресса? Иногда бывает полезно добавить в код отображение прогресса, чтобы пользователь не беспокоился, что программа не отвечает.
В первую очередь это касается синхронных приложений. Ведь, если наш код выполняет что-то одно, то на другие действия он не будет реагировать, ставя их в очередь. Ну и еще один вариант показывать, что программа не виснет, а думает, при этом не обязательно показывать прогресс.
Все это очень интересно, но если мы начнем самостоятельно писать полосу прогресса, то отвлечемся от основного кода. К счастью, в python есть библиотека Progressbar, которая делает все за нас.
#python #библиотеки
Media is too big
VIEW IN TELEGRAM
▶️ Аргумент key для сортировки коллекций по ключу
В ходе просмотра видео, вы узнаете, как выполнять сортировку коллекций по ключу
👀 Смотреть на YouTube
В ходе просмотра видео, вы узнаете, как выполнять сортировку коллекций по ключу
кеу
с помощью функции sorted
и методаsort
.👀 Смотреть на YouTube
📄 Шпаргалка для алгособеса
В данной статье коснёмся только самых основных вещей:
⏺ алгоритмическая сложность, асимптотика и О-нотация
⏺ структуры данных: связный список, стек, очередь, множество, map и другие
⏺ алгоритмы сортировки
⏺ алгоритм Дейкстры
🖥 Читать подробнее
#python
В данной статье коснёмся только самых основных вещей:
⏺ алгоритмическая сложность, асимптотика и О-нотация
⏺ структуры данных: связный список, стек, очередь, множество, map и другие
⏺ алгоритмы сортировки
⏺ алгоритм Дейкстры
🖥 Читать подробнее
#python
Media is too big
VIEW IN TELEGRAM
▶️ Pytest. Краткое руководство
Главным конкурентом старого доброго unittest в мире тестирования на python является модный молодежный pytest.
В видео посмотрим как написать самый простой тест, посмотрим на интеграцию со старыми тестами юниттеста и обсудим плюсы и минусы этой библиотеки.
👀 Смотреть на YouTube
#python #doc
Главным конкурентом старого доброго unittest в мире тестирования на python является модный молодежный pytest.
В видео посмотрим как написать самый простой тест, посмотрим на интеграцию со старыми тестами юниттеста и обсудим плюсы и минусы этой библиотеки.
👀 Смотреть на YouTube
#python #doc
🐍 ТОП-5 сайтов для Python-программиста.
1. AI Code Translator - это 😊 искусственный интеллект для конвертирования кода из Python (или других языков) в другие языки программирования, начиная с C++ и заканчивая Assembly.
2. Google Colab - это онлайн-редактор ✍️ для Python, позволяющий работать с кодом прямо в браузере. Тут вы можете легко скачивать библиотеки и выполнять другие операции.
3. musicForProgramming - специально подобранная 🎧 музыка для программирования.
4. Codecademy - образовательная платформа, предлагающая обширные курсы по Python и другим языкам программирования для 🍿 начинающих и опытных разработчиков.
5. Stack Overflow - пожалуй, самая популярная Q&A платформа для программистов, на которой вы найдете 🔍 решение практически любых проблем в коде и не только.
#сервисы
1. AI Code Translator - это 😊 искусственный интеллект для конвертирования кода из Python (или других языков) в другие языки программирования, начиная с C++ и заканчивая Assembly.
2. Google Colab - это онлайн-редактор ✍️ для Python, позволяющий работать с кодом прямо в браузере. Тут вы можете легко скачивать библиотеки и выполнять другие операции.
3. musicForProgramming - специально подобранная 🎧 музыка для программирования.
4. Codecademy - образовательная платформа, предлагающая обширные курсы по Python и другим языкам программирования для 🍿 начинающих и опытных разработчиков.
5. Stack Overflow - пожалуй, самая популярная Q&A платформа для программистов, на которой вы найдете 🔍 решение практически любых проблем в коде и не только.
#сервисы
Подключаемся к серверу по ssh
Пакет
Использовать модуль достаточно просто, пример основный методов на картинке выше. Кстати, интересный факт, Paramiko — это сочетание слов "параноик" и "друг" на языке эсперанто.
Устанавливается пакет привычным образом через пакетный менеджер pip. А документацию можете изучить тут.
#python #ssh
Пакет
paramiko
позволяет устанавливать соединение с удаленными машинами по протоколу SSH2 и производить там все те же операции, если бы вы подключались через, например, утилиту ssh на линуксе. Использовать модуль достаточно просто, пример основный методов на картинке выше. Кстати, интересный факт, Paramiko — это сочетание слов "параноик" и "друг" на языке эсперанто.
Устанавливается пакет привычным образом через пакетный менеджер pip. А документацию можете изучить тут.
#python #ssh
Оператор неравенства и Дядя Бэрри
Вспомним немного историю: 1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе, дружелюбный дядя языка на всю жизнь.
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
Для этого можно импортировать
Это всё, конечно же, было первоапрельской шуткой, но оператор
#пасхалка
Вспомним немного историю: 1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.
На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе, дружелюбный дядя языка на всю жизнь.
И этот Дядя Бэрри предложил заменить "противный" знак неравенства
!=
на <>
. Изменения обещали выпустить в последующих версиях, но его можно было протестировать и раньше времени.Для этого можно импортировать
barry_as_FLUFL
из пакета __future__
. Результат можете посмотреть на картинке сверху.Это всё, конечно же, было первоапрельской шуткой, но оператор
<>
всё ещё доступен и является некой пасхалкой.#пасхалка
Важное про цифры и Юникод
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры. Полный список находится здесь.
Это крайне важно знать, потому что эти символы влияют на такие функции, как
Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен.
#python #doc #числа #юникод
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры. Полный список находится здесь.
Это крайне важно знать, потому что эти символы влияют на такие функции, как
int
, unicode.isdecimal
и даже re.match
.Думаю, в один момент это знание сэкономит вам время на исправление "бага" с такими странными символами. Предупрежден — значит вооружен.
#python #doc #числа #юникод
Создаем бесконечный итератор
Функция
Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента.
Но если вы проходитесь циклом по такому итератору, то важно предусмотреть выход из цикла, иначе он станет бесконечным (как у нас в первом случае на картинке).
Мы также можем воспользоваться
#itertools
Функция
cycle()
из itertools
принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта.Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента.
Но если вы проходитесь циклом по такому итератору, то важно предусмотреть выход из цикла, иначе он станет бесконечным (как у нас в первом случае на картинке).
Мы также можем воспользоваться
islice()
, который вернет итератор по подмножеству переданного объекта.#itertools
Подключаемся к серверу по ssh
Пакет
Использовать модуль достаточно просто, пример основный методов на картинке выше. Кстати, интересный факт, Paramiko — это сочетание слов "параноик" и "друг" на языке эсперанто.
Устанавливается пакет привычным образом через пакетный менеджер pip. А документацию можете изучить тут.
#ssh
Пакет
paramiko
позволяет устанавливать соединение с удаленными машинами по протоколу SSH2 и производить там все те же операции, если бы вы подключались через, например, утилиту ssh на линуксе. Использовать модуль достаточно просто, пример основный методов на картинке выше. Кстати, интересный факт, Paramiko — это сочетание слов "параноик" и "друг" на языке эсперанто.
Устанавливается пакет привычным образом через пакетный менеджер pip. А документацию можете изучить тут.
#ssh
__missing__
Методing__
Метод определяет поведение подкласса словаря при доступе к несуществующему ключу. Более конкретно, внутренний метод словаря getitem вызывает методе
Этот метод может быть полезен при решении различных задач, например, при подсчете элементов или при работе со словарями, где отсутствующие ключи должны иметь определенное значение по умолчанию.
В этом примере мы создаем экземпляр кла
#Python #doc
Методing__
Метод определяет поведение подкласса словаря при доступе к несуществующему ключу. Более конкретно, внутренний метод словаря getitem вызывает методе
тод __mi
ssin если ключ не существует.Этот метод может быть полезен при решении различных задач, например, при подсчете элементов или при работе со словарями, где отсутствующие ключи должны иметь определенное значение по умолчанию.
В этом примере мы создаем экземпляр кла
сса Default
Dict с значением по умолчанию 'def
ault'. Когда мы пытаемся получить доступ к несуществующему ключу
'key', вызывается метод missing, который возвращает значение по умолчанию.#Python #doc
3 трюка с itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
Далее,
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
#модули #itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции –
chain
. Она позволяет "склеивать" несколько итерируемых элементов в один.Далее,
accumulate
. Эта функция немного похожа на reduce
, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min
), к каждому последующему элементу по порядку: min(11)
, min(11, 3)
, min(11, 3, 9)
и так далее.А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция
combinations
. Вторым аргументом можно задать длину этой самой комбинации.#модули #itertools
Редирект вывода программы
В
Контекстный менеджер принимает аргумент, в котором мы можем указать, куда должен переправляться весь вывод в последующем блоке.
Таким образом, данные из
Убедится в этом можем, открыв файл заново и прочитав оттуда данные.
#contextlib
В
contextlib
есть еще один прикольный контекстный менеджер — redirect_stdout
, позволяющий перенаправить стандартный вывод программы.Контекстный менеджер принимает аргумент, в котором мы можем указать, куда должен переправляться весь вывод в последующем блоке.
Таким образом, данные из
print()
в контекстом менеджере будут переправлены в открытый ранее файл, так как мы его передали в аргумент redirect_stdout
.Убедится в этом можем, открыв файл заново и прочитав оттуда данные.
#contextlib
Редактируем видео
Пакет
В целом, с пакетом разбораться не сложно, базовое использование показано на картинке. В примере мы открываем два видео, склеиваем их в одно, обрезаем полученный клип, уменьшаем громкость звука и в конце сохраняем результат.
Здесь еще важно отметить, что запуск и выполнение скриптов с обработкой видео может занять относительно большое время.
Такой пакет полезен в случаях, когда требуется обработать очень много видео по одному и тому же принципу.
#moviepy
Пакет
moviepy
позволяет обрезать и склеивать видео, добавлять видеоэффекты, а также редактировать звук. В целом, с пакетом разбораться не сложно, базовое использование показано на картинке. В примере мы открываем два видео, склеиваем их в одно, обрезаем полученный клип, уменьшаем громкость звука и в конце сохраняем результат.
Здесь еще важно отметить, что запуск и выполнение скриптов с обработкой видео может занять относительно большое время.
Такой пакет полезен в случаях, когда требуется обработать очень много видео по одному и тому же принципу.
#moviepy
Отлавливаем баги с assert
При выполнении инструкции
Но если попробовать выполнить инструкцию
Исключения
Также не нужно, к примеру, обрабатывать пользовательский ввод и пытаться обработать исключение
Если в вашем коде будет очень много
#исключения #assert
При выполнении инструкции
assert
с логическим выражением, результат которого равен True
, ничего не произойдет.Но если попробовать выполнить инструкцию
assert
с логическим выражением, которое равно False
, то будет сгенерировано исключение AssertionError
.Исключения
AssertionError
предназначены скорее для отладки. При написании программ на этапе разработки мы можем видеть, что делаем что-то не так (например, передали в метод некорректное значение). Также не нужно, к примеру, обрабатывать пользовательский ввод и пытаться обработать исключение
AssertionError
блоком try-except
.Если в вашем коде будет очень много
assert
'ов, то это затронет и производительность программы.#исключения #assert
Превью из длинного текста
Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.
Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод
Первым аргументом передается строка, вторым указываем количество символов, которое должен содержать результат. Также третьим аргументом можно передать заготовку, которая будет вставляться в конце обрезанной строки.
#строки #textwrap
Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.
Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод
shorten
из модуля textwrap
. Первым аргументом передается строка, вторым указываем количество символов, которое должен содержать результат. Также третьим аргументом можно передать заготовку, которая будет вставляться в конце обрезанной строки.
#строки #textwrap
Получаем текст с картинки
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов.
И в качестве обертки над их системой, был создан пакет
Для того, чтобы получить текст с картинки, нужно вызвать метод
Еще важно, что для открытия картинок рекомендуется использовать
#pytesseract
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов.
И в качестве обертки над их системой, был создан пакет
pytesseract
, который максимально удобно и легко использовать. Для того, чтобы получить текст с картинки, нужно вызвать метод
image_to_string
. Если вас интересует текст на русском, то следует указать аургмент lang
как 'rus'
. Еще важно, что для открытия картинок рекомендуется использовать
pillow
, хоть и имеется возможность просто указать путь к файлу в виде строки. #pytesseract