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

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

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

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Порядок разрешения методов

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

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

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

#классы
👍4❤1👎1
Корутины (Coroutines)

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

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

Функция работает так: при отправке значения через метод send локальная переменная name принимает его, а далее значение подставляется в строку и выводится на экран.

#генераторы #корутины
👍2👎2
Генерируем QR-код

Простой, но удобный и полезный пакет для создания QR-кодов. Для отрисовки картинок используется Pillow, так что убедитесь, что он у вас установлен.

Чтобы создать объект картинки с QR-кодом необходимо вызвать метод make() и передать данные в качестве аргумента. А для сохранения нужно применить метод save() к полученному объекту.

Еще пакет позволяет создавать QR-коды на основе картинок и в 6 разных стилях. Но про это все, а также про продвинутые примеры использования вы почитаете уже в их документации.

#qrcode
❤3👍3👎1
Знакомство с библиотекой NumPy в Python

Что такое
NumPy?
NumPy (Numerical Python) - это популярная библиотека для вычислительных операций с многомерными массивами и матрицами, а также для выполнения высокоуровневых математических функций. Она предоставляет эффективные инструменты для работы с большими объемами данных и позволяет выполнять различные операции, такие как суммирование, умножение, индексацию и многое другое, без необходимости явно создавать циклы.

Преимущества NumPy:
- Производительность: NumPy выполняет операции над массивами быстрее, чем стандартные структуры данных Python.
- Удобство: NumPy предоставляет удобные методы для работы с данными, такие как срезы, индексация и броадкастинг.
- Интеграция: Библиотека интегрируется легко с другими библиотеками, такими как SciPy, pandas и Matplotlib, что делает ее мощным инструментом для научных вычислений.

Пример использования NumPy:

import numpy as np

# Создаем одномерный массив
arr = np.array([1, 2, 3, 4, 5])

# Выполняем операции над массивом
arr_squared = arr ** 2
arr_sum = np.sum(arr)

print("Исходный массив:", arr)
print("Квадраты элементов:", arr_squared)
print("Сумма элементов:", arr_sum)

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

#python #NumPy #научныевычисления #анализданных
👍3👎1
Разделители для целых чисел

Трудно визуально различить целые числа подобные 10000000 и 100000000. Использовать запятые, как в английском языке, не получится.

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

Например, 1_000_000 будет интерпретироваться как целое число 1000000.

#числа
👍4👎1
FastAPI

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

Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).

Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.

FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.

#фреймворки #web
👍4❤1👎1
Превью из длинного текста

Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк.

Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод shorten из модуля textwrap.

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

#строки #textwrap
❤3👍2👎1
Selenium: Автоматизация веб-браузера в Python

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

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

Для начала работы с selenium, вам нужно установить библиотеку командой pip install selenium. После установки, вы можете создавать скрипты, которые будут взаимодействовать с веб-сайтами, имитируя действия пользователя. selenium предоставляет множество методов для работы с веб-элементами, что делает его одним из лучших инструментов для автоматизации веб-процессов.

С помощью selenium, вы можете автоматизировать рутинные задачи в веб-браузере, что сэкономит вам время и уменьшит вероятность ошибок. Это также открывает возможности для тестирования и сбора данных, что может быть весьма полезно в различных сферах, начиная от веб-разработки и заканчивая маркетингом.
❤1👍1👎1
Валидаторы данных

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

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

Помимо этого, validators позволяет также работать с ipv4, ipv6, mac адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.

#validatoras
❤2👎1
Функции только с позиционными параметрами

Если с помощью inspect посмотреть на то, как объявлена встроенная функция float, то увидим, что есть входный параметр x и еще какой-то непонятый слэш.

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

Такое поведение как раз задает тот слэш. Параметры, записанные до него, можно передать только как позиционные. После него – как угодно, все будет работать стандартно.

#функции
❤4👎1
Создаем контекстный менеджер с помощью декоратора

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

Так вот, помимо написания своего класса, есть еще один способ создать контекстный менеджер — использовать декоратор @contextmanager из встроенного пакета contextlib.

Первая часть функции tag, которая идёт до yield, выполняется при входе в блок with. Затем исполняется сам этот блок, а после этого завершается оставшаяся часть, которая идет после yield.

 #contextlib
❤2👍1👎1
Работаем с атрибутами объектов

Помимо привычного обращения к атрибутам объектов через точку, в Python есть 4 специальных функции: getattr, setattr, delattr и hasattr.

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

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

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

#python #tips
👍3👎2
Голосовой вывод в Python с помощью pyttsx3

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

Что такое pyttsx3?
pyttsx3 - это простой в использовании модуль Python для синтеза речи. Он предоставляет возможность преобразования текста в речь с различными настройками, такими как выбор голоса и регулирование скорости речи. Эта библиотека основана на популярной библиотеке pyttsx, но с более активной поддержкой и совместимостью с Python 3.

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

Пример использования pyttsx3 на фото.
❤5👍3👎1
Красивые таблицы в терминале

PrettyTable – это простая библиотека, предназначенная для быстрого и легкого представления табличных данных в виде ASCII. Модуль можно установить привычным способом через pip.

Для создания таблиц и работы с ними используется класс PrettyTable из этого модуля. Задать название для столбцов можно с помощью атрибута fields_name. Строки в таблицу добавляются путем вызова метода add_row.

Более того, модуль prettytable позволяет регулировать различные параметры, сортировать данные, работать с html, а также взаимодействовать с csv и sql таблицами. Так что возможностей у этого модуля предостаточно.

#таблицы #prettytable
❤3👍3👎1
Разница между генераторными выражениями и генераторами коллекций

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

Распечатав переменные, можно заметить, что значением переменной a является список, а переменная x хранит в себе объект генератора. И здесь возникает вопрос, что же использовать.

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

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

#python
👍3👎1
Быстрый deque

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

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

Для deque есть возможность использовать стандартные функции — sum, min, max и другие.
👎2👍1
Прогресс выполнения программы

Индикаторы прогресса добавляют наглядности в скриптах, которые исполняют какие-то функции, требующие времени для выполнения. Модуль tqdm является простым и лаконичным вариантом.

Привычный range можно заменить на trange для визуализации прогресса. А для итерации по какой-либо последовательности, достаточно просто передать её в функцию tqdm. Также модуль хорошо себя зарекомендовал и в Jupyter Notebook.

Кстати, интересный факт – название tqdm произошло от арабского слова "taqaddum" (تقدّم), которое означает "прогресс," а также это ещё и сокращение от "я тебя сильно люблю" на испанском (te quiero demasiado).

#модули #tqdm
👍1👎1
Получаем и задаем лимит рекурсии

В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов.

Но с помощью модуля sys можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти.

И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.

#рекурсия #лимиты
❤1👎1
Deep-Translator: Мощный инструмент для многоязычного перевода в Python

Deep-Translator - это выдающаяся библиотека на Python, разработанная для удобного и качественного перевода текстов на различные языки используя более 10 сервисов! Она предоставляет удобные инструменты для автоматического перевода текста, с опцией перевода между более чем 100 языками мира. Deep-Translator обладает высокой точностью перевода, а также поддерживает множество функций для настройки перевода под ваши потребности.

Deep-Translator также предоставляет возможность работы с различными API сервисами перевода (Google Translate, Yandex Translator, и т.д.), что делает его гибким инструментом для разработчиков.

Одним из плюсом использования Deep-Translator является его способность работать с текстами разных языков и поддерживать большое количество языковых пар для перевода.

Deep-Translator - это отличный инструмент для многоязычного перевода ваших текстов, который поможет вам сделать ваши проекты доступными для широкой аудитории.

Документация доступна тут
👍3