Python Academy
44.6K subscribers
1.43K photos
3 videos
460 links
Python Academy — один канал вместо тысячи учебников

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

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

Канал включён в перечень РКН: https://rkn.link/TVu
Download Telegram
Управление версиями Python

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

Вкратце, основной функционал pyenv выглядит так:

— Позволяет изменять глобальную версию Python для каждого пользователя;
— Обеспечивает поддержку версий Python для каждого проекта;
— Позволяет переопределить версию Python с помощью переменной окружения;
— Выполняет поиск команд из нескольких версий Python одновременно.

Кстати, этот проект основан на rbenv и ruby-build и модифицирован для Python.

#pyenv
👍21
Kivy

Kivy - это мощный кроссплатформенный фреймворк для разработки графических интерфейсов пользователя (GUI).

Основное его преимущество заключается в универсальности: созданные при помощи Kivy приложения могут запускаться на различных операционных системах, включая Windows, macOS, Linux, а также мобильные платформы Android и iOS.

#python #kivy
👍3
Decimal и Fraction

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

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

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

#decimal
Делаем планировщик задач

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

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

Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.

#schedule
👍64
Вычисление выражений Python

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

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

#tips #eval
👍3👎1🔥1
Определение литеральных типов

Когда нам может понадобится определить из полученной строки литеральный тип (строки, числа, списки, кортежи, словари, логические значения и None), мы можем воспользоваться функцией literal_eval() из модуля ast.

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

#ast #literal_eval
👍31
Время исполнения программы

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

Как вариант, можно воспользоваться функцией time из модуля time, которая возвращает текущее время в формате Unix.

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

Использование time.time() — не самый точный и лучший вариант, но, например, для быстрого сравнения двух разных частей кода подходит хорошо.

#time
4👍1
Функция math.perm()

math.perm() используется для определения количества возможных способов выбора и расположения m элементов из набора n элементов. Этот метод включен в модуль math.

Он требует указания двух параметров: nобщее число элементов в наборе, и m — число элементов в каждой возможной выборке. Результатом выполнения функции является целочисленное значение, представляющее число таких перестановок. Если n меньше m, функция возвратит 0.

Пример использования: расчет количества перестановок трех элементов из пяти. Это демонстрирует, сколько существует вариантов формирования трехэлементных подмножеств из пятерки.

#python
👍6
Как перезагрузить импортированный модуль?

Чтобы перезагрузить импортированный модуль в Python, вы можете использовать функцию reload() из модуля importlib

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

#python #importlib
👍2
Прочитать произвольную строку из файла

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

И конечно же не обошлось без приветствия, вы специально заготовили несколько различных вариантов в файле text.txt:

Приветствую!
Здравствуйте!
Ку, здарова.
Добрый день!
Привет!

Чтобы вывести это на экран, может помочь функция getline из модуля linecache. В чем главное отличие этой функции от обычного метода чтения из файла? Функция getline кеширует все строчки файла в списке, так что следующие вызовы get_answer отработают моментально.

#linecache #file
Генераторные выражения и списковые включения

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

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

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

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

#генераторы
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Как отслужить срочку, работая с Геранями, и получить диплом по дуальной системе Алабуга Политех?
👎54👍13😱2🔥1
Функция itertools.cycle

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

Сегодня мы бы хотели показать вам функцию cycle() из itertools. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.

К примеру, функция cycle() из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors).

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

#генераторы #itertools
👎5👍41
Простой, но мощный веб-фреймворк

Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub.

Flask предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. А коммьюнити предоставляет множество расширений для фреймворка.

Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу http://localhost:5000/ и посмотреть результат.

#модули
👎65🔥1
Воспроизводим аудиофайлы

Для этого воспользуемся кроссплатформенным пакетом playsound, который легко устанавливается через pip.

Он содержит в себе лишь одну полезную функцию для воспроизведения аудиофайла: playsound('path/to/file.mp3')

В качестве параметра функции можно указать путь к .mp3 или .wav файлу, или вообще его url.

#audio
👎4👍31🔥1
Работаем с картинками в Python

Библиотека Pillow — это очень мощный, быстрый и удобный инструмент для обработки графики в Python.

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

Метод Image.open('resources/img/cat.jpg') считывает картинку из папки.

img.convert('L') трансформирует картинку в черно-белую.

ImageOps.invert(image) обращает цвета.

img.transpose(Image.FLIP_LEFT_RIGHT) вертикально отзеркаливает картинку.

img.save('grayscale_cat.jpg') сохранит картинку на диске.

Больше официальных примеров и документацию можно посмотреть тут.

Пример можно посмотреть тут.

#pillow
👍51👎1🔥1
Узнаём атрибуты и методы класса

С помощью dir() можно получить список всех атрибутов и методов ‌‎любого‌‎ ‌‎объекта. Может пригодиться при изучении пакетов сторонних разработчиков.
👍31👎1
memoryview()

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

memoryview() также может использоваться для работы с массивами и другими объектами, поддерживающими буферный интерфейс в Python.

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

#python
4👎1
Конвертируем файлы в аудио-формате

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

Для загрузки файла нам нужно выбрать функцию from_ c соответствующим форматом в названии из класса AudioSegment. Также можно воспользоваться наиболее общей функцией from_file, передав путь к файлу и его формат.

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

#audio #pydub
👍1👎1
Аргументы командой строки

При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле sys.

Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.

#sys
👍2👎1