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

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

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

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

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

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

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

#числа #fraction
Завершение программы

Функция exit создана для удобства работы в интерактивном режиме, однако не рекомендуется использовать её внутри скриптов.

По факту функция просто поднимают исключение SystemExit. А при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора.
  
Использовать sys.exit() стоит потому, что этот метод лежит в стандартном модуле и всегда там доступен. Также это довольно явный способ завершения программы.

#sys #exit
3
Добавляем классу большую функциональность

На прошлой неделе мы объясняли декоратор @classmethod, а сейчас рассмотрим @staticmethod.

@staticmethod можно воспринимать как метод, который "не знает, к какому классу относится". Он просто получает переданные аргументы, без неявного первого аргумента, и его определение не изменяется через наследование. Еще раз: статические методы прикреплены к классу лишь для удобства — и не могут менять состояние ни класса, ни его экземпляра.

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

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

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

Что такое subprocess?

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

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

import subprocess

# Простой пример: выполнение команды "ls" в командной строке
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, text=True)

# Вывод результата выполнения команды
print(result.stdout)

В данном примере мы использовали subprocess.run для выполнения команды "ls -l". Параметр stdout=subprocess.PIPE указывает на перенаправление вывода команды в переменную result.stdout. Параметр text=True гарантирует, что вывод будет в текстовом формате.

Передача данных и получение результата:

import subprocess

# Передача данных в команду и получение результата
input_data = "Hello, subprocess!"
result = subprocess.run(['echo', input_data], stdout=subprocess.PIPE, text=True)

# Вывод результата выполнения команды
print(result.stdout)

В данном примере мы использовали команду echo для вывода переданных данных. subprocess.run позволяет передавать данные в команду через параметр input.

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

#python #subprocess
6
Преобразование текста в аудио на Python

Используя библиотеку gTTS (Google Text-to-Speech) для Python, можно легко преобразовывать текст в аудиофайлы. Эта библиотека использует API Google Translate для синтеза речи, обеспечивая высокое качество преобразования. Установка библиотеки производится стандартным способом через pip.

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

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

#python #gtts
Как работают арифметические операции

Если кто-то еще не знает, то в Python всё является объектами: числа в том числе. И при любых операциях, включая арифметические, у объектов вызываются магические методы.

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

Еще стоит отметить, что у float поддерживается деление с остатком, то есть метод __div__. А int имеет только деление с округлением, реализованное в методе __floordiv__.

#magic
👍21
Распознаем речь используя SpeechRecognition

SpeechRecognition — это библиотека на Python, которая предоставляет возможность использовать API для распознавания речи от различных компаний, таких как Google, Microsoft, IBM и другие. Кроме того, она поддерживает работу в офлайн-режиме.

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

#python #speechrecognition
👍1
Вычисление выражений Python

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

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

#tips #eval
Картографическая визуализация с использованием Folium

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

Эта библиотека поддерживает пользовательские наборы тайлов от MapBox или Cloudmade.

В арсенале Folium имеются различные типы маркеров, от простых маркеров местоположения со стандартными листовками, содержащими всплывающие окна и HTML подсказки, до возможности встраивания изображений, видео, а также GeoJSON и TopoJSON объектов.

Посмотреть результат выполнения кода со скрина можно тут -- https://i.imgur.com/QhNDb5I.png

#python #folium
Проверка отношения классов

Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции isinstance(object, classinfo) и issubclass(class, classinfo).

instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса.
issubclass — проверяет является ли класс наследником другого класса.

Данные функции зачастую применяются в ООП.

#isinstance #issubclass
👍2