Легкий веб-фреймворк
Несмотря на свою минималистичность,
После запуска подобного примера можете перейти в браузере по адресу
#python #bottle
Bottle
– это быстрый, простой и легкий микро-веб-фреймворк WSGI
для Python
. Он распространяется как единый файловый модуль и не имеет никаких зависимостей, кроме стандартной библиотеки Python
.Несмотря на свою минималистичность,
Bottle
предоставляет довольно широкие возможности, которых на 100% хватает для мелких и средних проектов. Вот список основных возможностей: routing
, templates
, POST-routing
, обработка форм, cookies
и сервер.После запуска подобного примера можете перейти в браузере по адресу
localhost:5000/hello/world
и посмотреть на результат, полученный из всего пяти строк кода.#python #bottle
Читаем текст с картинки используя Tesseract от Google
Чтобы извлечь текст из изображения, используйте метод
Рекомендуется использовать библиотеку
Пример кода:
#python #pytesseract
Google
разработал систему Tesseract
для извлечения текста из изображений через оптическое распознавание символов.Pytesseract
- это удобная оболочка для системы Tesseract
, облегчающая её использование.Чтобы извлечь текст из изображения, используйте метод
image_to_string
. Для работы с русским текстом укажите аргумент lang
как 'rus'
.Рекомендуется использовать библиотеку
pillow
для открытия изображений, хотя можно также просто указать путь к файлу.Пример кода:
from PIL import Image
import pytesseract
# Открываем изображение с помощью Pillow
image = Image.open('image.jpg')
# Используем pytesseract для извлечения текста
text = pytesseract.image_to_string(image, lang='rus')
print(text)
#python #pytesseract
Функция reduce
В
Примером работы
#python #functools
В
Python
модуль functools
открывает доступ к функциональным возможностям языка. Одной из замечательных функций в этом модуле является reduce
, которая эффективно уменьшает коллекцию данных, последовательно применяя к ним заданную функцию и сохраняя промежуточные результаты.Примером работы
reduce
может служить последовательное умножение чисел: сначала 1 умножается на 2, затем полученный результат умножается на 3, и так далее.#python #functools
Отправка электронных писем через SMTP в Python
Для установления соединения с почтовым сервером используется класс
Авторизация на сервере осуществляется с использованием метода
Для отправки электронных писем используется метод
Однако стоит учесть, что некоторые почтовые сервисы могут иметь ограничения и требования к безопасности. Например, для работы с Gmail может потребоваться включить поддержку "доступа к ненадежным приложениям" и настроить двухфакторную аутентификацию.
Пример использования
#python #smtp #smtplib
SMTP (Simple Mail Transfer Protocol)
- это протокол, позволяющий отправлять электронные письма. В стандартной библиотеке Python
доступен пакет smtplib
, который реализует функциональность SMTP
.Для установления соединения с почтовым сервером используется класс
SMTP_SSL
, который также обеспечивает шифрование данных. Для этого классу передаются адрес сервера и порт.Авторизация на сервере осуществляется с использованием метода
login
, в который передаются логин и пароль пользователя.Для отправки электронных писем используется метод
sendmail
, который принимает адрес отправителя, адрес получателя и текст сообщения. Важно отметить, что в конце написаного кода следует закрыть соединение с сервером с помощью метода quit()
.Однако стоит учесть, что некоторые почтовые сервисы могут иметь ограничения и требования к безопасности. Например, для работы с Gmail может потребоваться включить поддержку "доступа к ненадежным приложениям" и настроить двухфакторную аутентификацию.
Пример использования
smtplib
для отправки электронного письма:import smtplib
smtp_server = "smtp.example.com"
smtp_port = 465 # SSL-порт
smtp_username = "your_username"
smtp_password = "your_password"
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(smtp_username, smtp_password)
from_email = "[email protected]"
to_email = "[email protected]"
subject = "Тема письма"
message = "Текст письма"
server.sendmail(from_email, to_email, f"Subject: {subject}\n\n{message}")
server.quit()
#python #smtp #smtplib
Работа с методом str.replace() в Python
Метод принимает два основных аргумента: первый - это подстрока, которую нужно заменить в исходной строке, а второй - это подстрока, на которую происходит замена.
Кроме того, существует третий необязательный аргумент, определяющий количество замен старой подстроки на новую. Если он не указан, метод заменяет все вхождения.
#python #replace
Python
предлагает множество удобных встроенных методов для работы со строками. Один из таких методов - str.replace()
, который используется для замены частей строки.Метод принимает два основных аргумента: первый - это подстрока, которую нужно заменить в исходной строке, а второй - это подстрока, на которую происходит замена.
Кроме того, существует третий необязательный аргумент, определяющий количество замен старой подстроки на новую. Если он не указан, метод заменяет все вхождения.
#python #replace
Делаем планировщик задач
К моему удивлению, далеко не все знают про пакет
Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#python #schedule
К моему удивлению, далеко не все знают про пакет
schedule
, который позволяет планировать задачи и повторять их через промежуток времени. Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще
schedule
не требует внешних зависимостей и сам в целом легковесный. Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
#python #schedule
Управление лимитом рекурсии в Python
В
Однако, используя модуль
В большинстве случаев предпочтительнее использовать итеративные подходы, такие как циклы, вместо рекурсии.
#python #recursion
В
Python
отсутствует оптимизация хвостовой рекурсии, что часто приводит к ошибке RecursionError
при разработке рекурсивных алгоритмов.Однако, используя модуль
sys
, можно узнать и даже изменить максимально допустимую глубину рекурсии. Несмотря на это, следует быть осторожным с увеличением лимита, так как каждый вызов рекурсии потребляет значительное количество памяти.В большинстве случаев предпочтительнее использовать итеративные подходы, такие как циклы, вместо рекурсии.
#python #recursion
Обработка видео с помощью MoviePy
Пакет достаточно прост в освоении, и базовые принципы его использования можно увидеть на примере. В данном случае, мы открываем два видеофайла, соединяем их в один, обрезаем получившийся клип, уменьшаем громкость звука и сохраняем итоговый результат.
Стоит учитывать, что обработка видео, особенно больших файлов, может занять значительное время.
#python #moviepy
MoviePy
- это удобный пакет для выполнения различных задач по редактированию видео, включая обрезку и склейку клипов, добавление видеоэффектов и редактирование аудиодорожки.Пакет достаточно прост в освоении, и базовые принципы его использования можно увидеть на примере. В данном случае, мы открываем два видеофайла, соединяем их в один, обрезаем получившийся клип, уменьшаем громкость звука и сохраняем итоговый результат.
Стоит учитывать, что обработка видео, особенно больших файлов, может занять значительное время.
MoviePy
особенно полезен, когда необходимо автоматизировать обработку большого количества видео по единому алгоритму.#python #moviepy
Думаете о карьере в сфере IT — начните с Python. Этот язык рекомендуют в качестве первого языка программирования, и для начала обучения вам не понадобятся технические знания и навыки.
Запишитесь на бесплатный курс Нетологии «Основы Python: создаём телеграм-бота». Программа акцентирована на практике. За 5 занятий вы погрузитесь в логику и синтаксис языка, изучите основные инструменты для написания кода. С нуля разработаете планировщик задач и создадите полезного Telegram-бота, которым сможет пользоваться кто угодно.
Попробуйте
Реклама. ООО “Нетология“. Erid LatgBc2x6
Запишитесь на бесплатный курс Нетологии «Основы Python: создаём телеграм-бота». Программа акцентирована на практике. За 5 занятий вы погрузитесь в логику и синтаксис языка, изучите основные инструменты для написания кода. С нуля разработаете планировщик задач и создадите полезного Telegram-бота, которым сможет пользоваться кто угодно.
Попробуйте
Реклама. ООО “Нетология“. Erid LatgBc2x6
Использование функции zip в Python
Функция
Пример:
#python #zip
Функция
zip
в Python
формирует итератор, объединяющий элементы из нескольких списков. Это удобно для одновременного перебора элементов нескольких списков в цикле for
или для реализации параллельной сортировки.Пример:
# Допустим, у нас есть два списка
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
# Используем функцию zip для объединения этих списков
zipped = zip(list1, list2)
# Теперь мы можем перебрать объединенные элементы
for num, letter in zipped:
print(f"Число: {num}, Буква: {letter}")
# Вывод:
# Число: 1, Буква: a
# Число: 2, Буква: b
# Число: 3, Буква: c
#python #zip
Получила «серебро»: нейросеть Сбера Kandinsky заняла второе место по популярности среди разработчиков по версии AI-ресурса с open-source решениями Hugging Face
При этом лидером стала Stable Diffusion. Однако по темпам роста Kandinsky все же сумела заполучить «золото».
Кроме того, разработчики нейросети поделились итогами года Kandinsky. Всего за 2023 год пользователи сгенерировали с её помощью более 200 млн изображений, а аудитория выросла до 12 млн человек.
#kandinsky
При этом лидером стала Stable Diffusion. Однако по темпам роста Kandinsky все же сумела заполучить «золото».
Кроме того, разработчики нейросети поделились итогами года Kandinsky. Всего за 2023 год пользователи сгенерировали с её помощью более 200 млн изображений, а аудитория выросла до 12 млн человек.
#kandinsky
Работа с данными в Python используя Pydantic
Этот инструмент особенно полезен при работе с
Для более подробного примера и документации можно обратиться сюда.
#python #pydantic
Pydantic
- это библиотека для Python
, предназначенная для парсинга и валидации данных. Она использует статическую типизацию для атрибутов классов, что облегчает проверку данных при создании объектов.Этот инструмент особенно полезен при работе с
JSON
: он автоматизирует проверку структуры, необходимых полей и значений. Pydantic
поддерживает не только стандартные типы данных, но и специализированные, такие как email, URL-адреса и номера платежных карт.Для более подробного примера и документации можно обратиться сюда.
#python #pydantic
Запись экрана в Windows с помощью Python
Для записи экрана в Windows используя
Библиотека
Эта библиотека идеально подходит для создания игровых ботов.
#python #d3dshot
Для записи экрана в Windows используя
Python
существует несколько библиотек, однако наиболее эффективной оказалась d3dshot.Библиотека
d3dshot
использует системные библиотеки DXGI
и Direct3D
для быстрого и надежного захвата экрана.Эта библиотека идеально подходит для создания игровых ботов.
#python #d3dshot
Работаем с атрибутами объектов
Помимо привычного обращения к атрибутам объектов через точку, в Python есть 4 специальных функции:
По названиям можно понять, что первые три отвечают за получение, установку и удаление атрибута. А последний проверяет, существует ли атрибут с указанным названием у объекта или нет.
Во всех функциях первыми двумя аргументами идут объект и название атрибута в виде строки. В
На практике использование подобного — довольно редкий случай, но иногда может сильно выручить, так что берите на вооружение.
#python #tips
Помимо привычного обращения к атрибутам объектов через точку, в Python есть 4 специальных функции:
getattr
, setattr
, delattr
и hasattr
.По названиям можно понять, что первые три отвечают за получение, установку и удаление атрибута. А последний проверяет, существует ли атрибут с указанным названием у объекта или нет.
Во всех функциях первыми двумя аргументами идут объект и название атрибута в виде строки. В
setattr
также нужно передать новое значение для атрибута.На практике использование подобного — довольно редкий случай, но иногда может сильно выручить, так что берите на вооружение.
#python #tips
Forwarded from Не баг, а фича
Нейронка от Сбера обошла GPT-3.5-turbo по качеству ответов на английском языке. На русском и так всё было хорошо. Теперь же, благодаря тесту MMLU, стало известно, что и на родном языке Шерлока Холмса правильность ответов GigaChat PRO на 6% выше, чем у разработки от OpenAI.
То чувство, когда можешь в англ лучше, чем его носитель.
@bugnotfeature
То чувство, когда можешь в англ лучше, чем его носитель.
@bugnotfeature
Современный способ сериализации, десериализации и валидации данных
adaptix - гибкая и легко конфигурируемая библиотека для сериализации и десериализации данных.
Также, библиотека позволяет легко создавать свои правила для конвертации данных и группировать их, соответствуя принципу DRY.
Особое внимание стоит обратить на возможность преобразования стилей названий полей, что полезно в web приложениях.
Приятным бонусом будет то, что adaptix до двух раз быстрее чем pydantic v2 (бенчмарки).
#python #typing #adaptix
adaptix - гибкая и легко конфигурируемая библиотека для сериализации и десериализации данных.
adaptix
работает с нативными dataclass
, NamedTuple
, TypedDict
. Ваши модели не зависят от библиотеки и не требуют наследования от каких-либо специальных классов, позволяя моделям оставаться чистыми, а вам - следовать принципу инверсии зависимостей.Также, библиотека позволяет легко создавать свои правила для конвертации данных и группировать их, соответствуя принципу DRY.
Особое внимание стоит обратить на возможность преобразования стилей названий полей, что полезно в web приложениях.
Приятным бонусом будет то, что adaptix до двух раз быстрее чем pydantic v2 (бенчмарки).
#python #typing #adaptix
Сортировка списков по ключу
У списков есть метод
Но еще есть аргумент
В коде на картинке у нас есть список из словарей, которые содержать описания машин. И в качестве мы отсортировали список по годам их выпуска, то есть по ключу
Также вместо написания обычных функций были применены анонимные, чтобы закрепить недавнюю тему о них.
#списки
У списков есть метод
sort()
, который сортирует элементы. Также есть аргумент reverse
, с помощью которого можно отсортировать в обратном порядке при значении True
.Но еще есть аргумент
key
, отвечающий за критерий сортировки. Он принимает функцию, которая применяется к каждому элементу. Возвращаемый результат и есть критерий, по которому произойдет сортировка.В коде на картинке у нас есть список из словарей, которые содержать описания машин. И в качестве мы отсортировали список по годам их выпуска, то есть по ключу
'year'
.Также вместо написания обычных функций были применены анонимные, чтобы закрепить недавнюю тему о них.
#списки
erid: LjN8KEAmm
1 февраля в 19:00 состоится третий Backend Meetup от X5 Tech
Бэкенд-сообщество вновь собирается, чтобы обсудить 4 доклада от специалистов по Python и Java.
Основные темы: DDD в Django, ElasticSearch в роли базы данных нулевой нормальности, почему кодинг — не главное, а также практический опыт применения чистой архитектуры.
Спикеры:
— Александр Логинов — менеджер направления HR и монетизации, X5 Tech
— Максим Столпасов — руководитель команды разработки, X5 Tech.
— Константин Никифоров — руководитель команды разработки, X5 Tech
— Вадим Ваганов — ведущий эксперт разработки, Газпромбанк
— Павел Лукьянов — руководитель Python практики, ГК Юзтех
Регистрация на YouTube трансляцию
Реклама. ООО "Корпоративный центр ИКС 5", ИНН 7728632689
1 февраля в 19:00 состоится третий Backend Meetup от X5 Tech
Бэкенд-сообщество вновь собирается, чтобы обсудить 4 доклада от специалистов по Python и Java.
Основные темы: DDD в Django, ElasticSearch в роли базы данных нулевой нормальности, почему кодинг — не главное, а также практический опыт применения чистой архитектуры.
Спикеры:
— Александр Логинов — менеджер направления HR и монетизации, X5 Tech
— Максим Столпасов — руководитель команды разработки, X5 Tech.
— Константин Никифоров — руководитель команды разработки, X5 Tech
— Вадим Ваганов — ведущий эксперт разработки, Газпромбанк
— Павел Лукьянов — руководитель Python практики, ГК Юзтех
Регистрация на YouTube трансляцию
Реклама. ООО "Корпоративный центр ИКС 5", ИНН 7728632689
Загрузка файлов асинхронно
Если у нас есть список
Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
С помощью метода
Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
Если у нас есть список
URL
картинок для загрузки, использование простого цикла for
позволит нам загрузить их последовательно, по одной за раз.Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
ThreadPoolExecutor
из модуля concurrent.futures
. Этот инструмент позволяет выполнить функцию загрузки в нескольких параллельных потоках, где в конструкторе необходимо указать максимальное количество потоков для одновременного выполнения.С помощью метода
.map(download, urls)
можно развернуть функцию загрузки на каждый URL
из списка, обеспечивая их параллельную обработку.Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
Jingle Bio — лучший конструктор страниц портфолио
Без особых усилий отображайте свои цифровые достижения на элегантной и удобной странице портфолио. Демонстрируйте свои проекты, навыки, опыт и достижения в одном месте. концепция не оригинальна (аналогов много), но исполнение, пожалуй, самое продвинутое. Тут можно сразу видеть обновления контента, да и вообще персоницифировать страницу.
Создайте свою собственную страницу портфолио и постройте свой персональный бренд, чтобы поднять свою карьеру на новый уровень. И самое главное — это бесплатно!
Без особых усилий отображайте свои цифровые достижения на элегантной и удобной странице портфолио. Демонстрируйте свои проекты, навыки, опыт и достижения в одном месте. концепция не оригинальна (аналогов много), но исполнение, пожалуй, самое продвинутое. Тут можно сразу видеть обновления контента, да и вообще персоницифировать страницу.
Создайте свою собственную страницу портфолио и постройте свой персональный бренд, чтобы поднять свою карьеру на новый уровень. И самое главное — это бесплатно!