Python Academy
47.1K subscribers
1.25K photos
4 videos
422 links
Python Academy — один канал вместо тысячи учебников

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

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

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Тестирование на pytest

pytest — ближе по духу к Python нежели unittest, который накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов.

При разработке на pytest ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python.

Также он поддерживает запуск тестов на unittest и nose, то есть полная обратная совместимость с ними.
3🔥1
Удаление страниц PDF-файла

Библиотека PyMuPDF включает в себя довольно много сложных методов, которые упрощают удаление страниц из файла PDF. Он позволяет указать либо одну страницу (используя метод deletePage()), либо диапазон номеров страниц (используя метод deletePageRange()), либо список с номерами страниц (используя метод select()).

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

#python
🔥3👍1
Библиотека для генерации рандомных данных

Mimesis — это модуль, предназначенный для генерации случайных данных. Это особенно полезно при тестировании алгоритмов, когда требуется большой объем данных. Использование Mimesis избавляет от необходимости создавать эти данные вручную, существенно экономя время.

Этот код сгенерирует случайные адресные данные, такие как название города, улицы, номер дома и координаты.

#python #mimesis
Используйте dict.get() вместо dict[]

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

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

Поэтому мы считаем, что лучше использовать метод get у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию.

Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.

В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.

#python #dict
1
Media is too big
VIEW IN TELEGRAM
Не ждали, а она тут — новая версия Python 3.14

И лучше просто кликнуть сейчас по ссылке и послушать краткий обзор от Евгения Афонасьева, тимлида разработки Antifraud в Авито, чем потом упускать полезные фичи и искать этот пост.

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

Смотрим и обсуждаем по ссылке!
👎4
Wget

Наверняка вам не раз приходилось писать методы для какой-то специфической работы с вебом. Но я вас огорчу – вы делали это зря. Ведь уже есть wget. Рекурсивно скачать сайт? Забрать со страницы все изображения? Для wget это не проблема.
🔥4👍1
Управление версионностью Python с помощью pyenv

Инструмент pyenv предоставляет простой способ для переключения между различными версиями Python, придерживаясь принципов UNIX, согласно которым каждый инструмент должен эффективно выполнять свою задачу.

Возможности pyenv включают:

- Изменение глобальной версии Python для пользователя;
- Управление версиями Python для индивидуальных проектов;
- Переопределение версии Python через переменную среды;
- Поиск и выполнение команд сразу из нескольких версий Python.

#pyenv
👍31
Получение геолокации по 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
This media is not supported in your browser
VIEW IN TELEGRAM
Привычка на ВСЮ ЖИЗНЬ: научиться с пользой убивать время в дороге, на скучной паре или унылой работе.

📚Лучшее средство — слушать книги. Они нереально расширяют кругозор, прокачивают красноречие и словарный запас. И их удобно слушать на фоне.

В телеге есть бот, который БЕСПЛАТНО ищет тысячи аудиокниг. А если любите читать, а не слушать — обычные книги тоже есть.

🎧 Пока не забанили, сохраняйте ссылку: @flibustatopbot
1👎1
PyQtGraph

PyQtGraph — это библиотека Python для создания интерактивных 2D и 3D графиков, а также элементов графического интерфейса (GUI). Она основана на PyQt (или PySide) и NumPy, что делает ее мощным и универсальным инструментом для научных, инженерных и исследовательских задач.

#python
6
TurboGears

TurboGears — это фреймворк для создания веб-приложений на Python. Он состоит из набора взаимозаменяемых компонентов, упрощающих и ускоряющих разработку.

Вот некоторые ключевые особенности TurboGears:


— TurboGears использует архитектурный шаблон Model-View-Controller (MVC), разделяя ваше приложение на логические блоки: модель, представление и контроллер. Это способствует более организованной и поддерживаемой разработке.
— TurboGears позволяет вам выбирать нужные библиотеки и инструменты. По умолчанию он использует Pylons, SQLAlchemy, Genshi и Repoze, но вы можете заменить их на другие.

#python
1
NetworkX

NetworkX — это библиотека Python для анализа сложных сетей. Она предоставляет структуры данных для работы с графами (сетями) и реализует множество алгоритмов для анализа и визуализации сетевых данных.

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

#python
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Научись проектировать ИИ-агентов, управлять роботами и развертывать RAG-системы 21 ноября на True Tech Champ

На бесплатном фестивале технологий от МТС тебя ждет конференция с российскими и иностранными экспертами и новый формат лектория — ИТ-качалка.

Уже известны первые спикеры и темы:

«Физический агент: на пути к когнитивным роботам общего назначения с моделями мира», Артем Лыков — ведущий R&D-разработчик MWS, аспирант ISR Lab и Skoltech.
«RAG как помощник на каждый день», Валентин Малых — руководитель фундаментальных исследований MWS AI
An introduction tutorial to AI Agent Workflows, Майкл Ланэм — канадский разработчик с 20-летним и автор книги AI Agents in Action.

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

Выбирай формат — смотри прямой эфир или приходи в МТС Live Холл.
Регистрируйся, чтобы провести 21 ноября с пользой и драйвом.
2
Порядок разрешения методов

В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.

Этот порядок можно получить при помощи атрибута __mro__. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value, Python будет искать сначала в классе A, далее в B, затем в C и в самом конце в object

Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.

#классы
3