Python Academy
44.4K subscribers
1.55K photos
2 videos
484 links
Python Academy — один канал вместо тысячи учебников

Чат канала: @python_academy_chat

Сотрудничество: @zubar89

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Метод sets.issubset()

Метод sets.issubset() позволяет проверить находится ли каждый элемент множества sets в последовательности other. Метод возвращает True, если множество sets является подмножеством итерируемого объекта other, если нет, то вернет False.

Синтаксис:
sets.issubset(other).
3👎1
Indico

Indico — это мощная библиотека Python для извлечения информации из неструктурированных текстов, изображений и PDF-файлов. Она позволяет вам выполнять задачи обработки естественного языка (NLP), компьютерного зрения (CV) и машинного обучения (ML) с помощью простых и понятных API.

https://pypi.org/project/indico/
👍2👎1
Автоматизация мобильных приложений с помощью uiautomator2

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

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

Что такое uiautomator2?

uiautomator2 - это Python-библиотека, предоставляющая возможность управления устройствами Android и взаимодействия с приложениями на них. Она основана на Google's Android Testing Support Library и является мощным инструментом для автоматизации действий на устройствах Android.

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

#python #uiautomator2 #автоматизация
👎1
Получение геолокации по IP с использованием ip2geotools

Недавно я обнаружил увлекательный пакет ip2geotools, который обеспечивает возможность получения геолокации по IP из различных баз данных.
Пример кода для получения информации по IP с использованием класса DbIpCity, представляющего некоммерческую базу данных, выглядит следующим образом:

from ip2geotools.databases.noncommercial import DbIpCity

def get_ip_geolocation(ip_address):
try:
response = DbIpCity.get(ip_address, api_key='free')
city = response.city
region = response.region
country = response.country
latitude = response.latitude
longitude = response.longitude

print(f"Информация о местоположении для IP {ip_address}:")
print(f"Город: {city}")
print(f"Регион: {region}")
print(f"Страна: {country}")
print(f"Широта: {latitude}")
print(f"Долгота: {longitude}")

except Exception as e:
print(f"Ошибка при получении информации по IP {ip_address}: {e}")

ip_address_to_check = '8.8.8.8'
get_ip_geolocation(ip_address_to_check)


Этот код использует метод get из класса DbIpCity для получения информации о местоположении по заданному IP-адресу. Помните о том, что для использования некоторых баз данных может потребоваться API-ключ.

#python #ip2geotools
👍4👎2
Оптимизация Памяти в Python с Библиотекой gc

Если вы заботитесь о производительности ваших Python-приложений, то библиотека gc (Garbage Collector) вам точно пригодится. Давайте рассмотрим, почему.

gc в Python предназначена для автоматического управления памятью, освобождая вас от рутины по управлению объектами. Это особенно полезно в задачах, связанных с избежанием утечек памяти и оптимизацией её использования.

import gc

gc.enable()

class SampleObject:
def __init__(self, value):
self.value = value

objects_list = [SampleObject(i) for i in range(1000000)]

gc.collect()

# Пример обработки данных (например, фильтрация объектов)
filtered_objects = [obj for obj in objects_list if obj.value % 2 == 0]

gc.collect()

print(filtered_objects[:10])


В приведенном коде мы создаем список объектов SampleObject, который может занять значительное количество памяти. После обработки данных или в других стратегических точках программы, вызывается сборщик мусора для освобождения памяти, занятой неиспользуемыми объектами.

Использование библиотеки gc в Python может значительно улучшить производительность ваших программ, освободив вас от рутины по управлению памятью. Это особенно важно в проектах с большим объемом данных или длительным временем выполнения.

#python #gc #garbagecleaner
👍2👎1
Параллельное Исполнение в Python с Помощью Модуля threading

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

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

Пример:

import threading
import time

# Функция, которую будем выполнять в параллельных потоках
def print_numbers():
for i in range(5):
time.sleep(1) # Эмулируем длительную операцию
print(f"Thread {threading.current_thread().name}: {i}")

# Создаем два потока
thread1 = threading.Thread(target=print_numbers, name="Thread 1")
thread2 = threading.Thread(target=print_numbers, name="Thread 2")

# Запускаем потоки
thread1.start()
thread2.start()

# Ожидаем завершения потоков перед завершением программы
thread1.join()
thread2.join()

print("Главный поток выполнения завершен.")


В данном примере создаются два потока, каждый из которых выполняет функцию print_numbers, эмулируя длительную операцию с использованием time.sleep. Запуск потоков осуществляется с помощью метода start(), и главный поток ожидает их завершения с использованием метода join().

Модуль threading предоставляет удобные средства для работы с параллельными потоками в Python, что позволяет улучшить производительность приложений. Однако, следует быть внимательными при работе с потоками из-за потенциальных проблем с блокировками и синхронизацией данных. Попробуйте интегрировать threading в свой код и ускорьте выполнение задач! 💻

#python #threading
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52👎1😱1
Скачиваем видео с YouTube

Пакет pytube предоставляет всю небходимую функциональность для скачивания видео с YouTube, а также для сбора всей информации о нем.

Для работы нам необходимо создать объект класса YouTube. Помимо ссылки на видео в конструктор можно передать в качестве параметров функции для обработки прогресса загрузки и завершения.

Большинство видео на ютубе не имеют аудиодорожки на потоках с высоким разрешением, свыше 720p — это связано с технологией передачи DASH, которую использует YouTube.

На картинке мы показали как отфильтровать потоки с прогрессивной передачей и выбрать из полученного списка с максимальным доступным разрешением до 720p.

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

#python #youtube
👍4👎21
Altair

Библиотека Altair — это декларативная библиотека для создания статистических визуализаций.
Она основана на спецификации Vega-Lite и позволяет создавать сложные графики с минимальным количеством кода.

Altair предоставляет простой синтаксис для создания графиков, а также интегрируется с Jupyter Notebook и JupyterLab для интерактивного отображения графиков.

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

Если вы хотите сохранить график в виде файла, вы можете использовать метод save().

*На втором изображении представлен результат работы программы.
3👎2
Дробные числа

По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.

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

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

#числа #fraction
1👎1
Цепочка исключений

Для формирования цепочек исключений используется ключевое слово from, после которого требуется указать ещё одно исключение. Это исключение будет подвязано к вызванному в атрибут __cause__ (поддерживает запись).

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

#exception
👎2
Преобразования текста в аудио с помощью Python

Для преобразования текста в аудио на Python можно использовать библиотеку gTTS (Google Text-to-Speech).

В данном примере мы используем текст "Привет!» на русском языке, создаем объект gTTS и сохраняем аудиофайл "hello.mp3". Затем мы воспроизводим аудиофайл с помощью утилиты mpg321.
👎2
Заглушка в коде

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

Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.

Или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.

#pass
5👎2
Системный дизайн для тех, кто хочет расти дальше разработки

7 сентября стартует курс по проектированию высоконагруженных систем от Devhands.ru.

В программе:
— масштабирование, балансировка, кеши, СУБД, шардинг и высокая доступность;
— CAP/PACELC, консистентность, саги и транзакционные очереди;
— проектирование маркетплейсов, такси, соцсетей, мессенджеров, CDN, онлайн-кинотеатров и других сервисов;
— расчёт нагрузки и перевод бизнес-показателей в требования к системе;
— практика секций системного дизайна на технических интервью.

Всё проходит в формате живых онлайн-сессий: лекции, брейнштормы, домашние проекты и обратная связь. Автор курса — Алексей Рыбак, основатель R&D-центра Devhands.ru и ex-CTO Badoo с 20-летним опытом в высоконагруженных проектах.

Старт — 7 сентября. Изучить программу и записаться можно по ссылке.

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqvimBRf
👍2👎2
Нижнее подчеркивание

В Python имя переменной может состоять из одного подчеркивания. Хотя такое имя не достаточно описательно и не должно использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.

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

Второе, интерактивный режим использует _ для хранения результата последнего выполненного выражения.

Третье, документация модуля gettext рекомендует псевдоним _() для функции gettext(), чтобы минимизировать загромождение вашего кода.

#тонкости
👎2
Получаем данные о системе 

Кроссплатформенная библиотека psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе. Примеры базового использования показаны на картинке. 

Если говорить про практические применение, psutil полезен в основном для мониторинга системы, ограничения ресурсов процессов и управления запущенными процессами. 

Помимо привычных Windows, MacOS и Linux, библиотека также поддерживает системы FreeBSD, OpenBSD, NetBSD, Sun Solaris и AIX. 

#psutil
👎2👍1🔥1
Функция reduce

Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.

Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.

#функции #reduce
👎2
Официальное упорядочивание словарей

Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.

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

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

#словари
3👎1
PyJWT: Работаем с JSON Web Tokens в Python

PyJWT — это библиотека Python, предназначенная для кодирования, декодирования и проверки подлинности JSON Web Tokens (JWT).

JWT — это открытый стандарт (RFC 7519), который определяет компактный и независимый способ безопасной передачи информации между сторонами в виде JSON-объекта. Эта информация может быть проверена и доверена, так как она подписана цифровой подписью.

В этом примере мы создаём JWT, который содержит идентификатор пользователя и срок его действия. Затем мы декодируем и проверяем токен, чтобы убедиться, что он ещё действителен и подлинен.

#python #pyjwt
6👎1
Многопоточность

В модуле threading новый поток выполнения может начинаться с нового threading.Thread и присвоения ему функции для выполнения.

Параметр target ссылается на функцию (или вызываемый объект), который будет работать. Нить не начнет выполнение до start, также не будет вызываться Thread объекта.

Когда my_thread завершается, вызов start выкинет исключение RuntimeError. Если вы хотите запустить Thread в фоновом режиме, то передавайте daemon=True или установите my_thread.daemon в True перед вызовом start().

#потоки #многопоточность
👍2👎1🔥1