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

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

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

Канал включён в перечень РКН: https://rkn.link/TVu
加入频道
Градиентный спуск: просто о сложном

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

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

Читать 7 минут

#статья
Вычисление выражений Python

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

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

#tips #eval
Полезность модуля math

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

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

Модуль math обеспечивает доступ к некоторым популярным математическим функциям и константам, к тому же он является встроенным (не нужно делать установку через pip).

#math #pi #inf
Логические any и all

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

Функция any возвращает значение True, если хотя бы одно из переданных утверждений верно, all – в случае, если все верны.

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

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

Всё достаточно просто: с помощью модуля time запоминаем начальное время, выполняем основной код, узнаём конечное время и просто высчитываем разницу.

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

#трюки #time
Какая тема вам больше интересна?
Anonymous Poll
55%
Телеграм-боты
45%
Этичный хакинг
Используем pathlib вместо os

Стандартная библиотека Python 3 содержит модуль pathlib, включающий в себя функцию Path(), достаточную для полноценной работы с файловыми путями.

Одной из самых крутых фич в работе с путями является замена os.path.join() на более удобный и элегантный вариант, изображенный на картинке.

По сути эта библиотека заменяет ранее используемые для работы с путями функции из модуля os (например  os.mkdir или os.path) на более удобные.

#path #os
Комплексные числа в Python

Кроме уже известных вам типов int, float и подобных, в Python существует еще один довольно интересный тип, а именно, complex.

В Python комплексные числа представлены в виде x + iy. Python преобразует реальные числа x и y в комплексное с помощью функции complex(x,y).

Это число можно превратить в строку с помощью str, посчитать его модуль с помощью abs, а также для доступа к его реальной или мнимой части можно воспользоваться функциями real() и imag().

Хотя данный тип и является встроенным, для полноценной работы с комплексными операциями понадобится модуль cmath.

#complex #cmath
Работа с ip адресами

Если вам приходится писать на Python программы для работы с сетью — это значит, что вам может очень пригодиться модуль ipaddress.

Одним из вариантов его использования является генерация списка IP-адресов из диапазона адресов, заданных в формате CIDR (Classless Inter-Domain Routing, или бесклассовая адресация).

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

#ipaddress
Красивый вывод таблиц

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

Итак, имена столбцов задается с помощью атрибута table.field_names. А добавлять строки с данными в таблицу можно методом table.add_row([]), передавая туда список элементов.

Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод table.get_string().

#трюки #prettytable
Дополнение про prettytable

А вот результат на картинке, который получился при выводе table через стандартную функцию print().

P. S. Также советуем почитать их гитхаб – там ещё больше примеров.

#трюки #prettytable
Fast QR (@fastqr_bot)

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

Вы присылаете боту ссылку на веб-ресурс – он вам в ответ QR-код со спрятанной ссылкой. Также можете отправить картинку, на фоне которой будет создан код. И полезно, и красиво.

Скрипт реализован на всеми любимом python-telegram-bot, а сам код написан достаточно хорошо, берите с таких проектов пример. Ну и конечно же вот исходники – github.com/awitwicki/fastqr_bot.

P. S. Присылайте свои проекты мне в личные сообщения – @a1f20. В следующее воскресенье расскажу ещё об одном проекте.

#проектподписчика
Параметры функции *args, **kwargs

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

В примере функция принимает обязательный аргумент value, а остальных аргументов она как бы не ожидает. В таком случае *args упаковывает все не именованные аргументы в кортеж, а **kwargs – все именованные в словарь.

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

#functions #arguments
Pyperclip

Модуль pyperclip имеет функции copy() и paste(), которые позволяют отправлять текст в буфер обмена вашего компьютера и получать его оттуда.

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

Установить этот модуль можно привычным способом через пакетный менеджер pip.

#pyperclip #модули
import antigravity

Многие из вас могли уже знать об этой пасхалке в Python, но вспоминать о ней всегда интересно :)

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

#пасхалки
Упаковка параметров с помощью urlencode

Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:

url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)

Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция urlencode из модуля urllib.

#трюки #urllib
How Do I

Сегодня наткнулся на модуль, который за вас может гуглить вопросы по программированию. Просто в консоли пишите "howdoi ...", где вместо многоточия – ваш вопрос.

Модуль просто парсит верхние ответы со StackOverflow, и всё. Устанавливается это чудо через pip, а для его использования, очевидно, нужен интернет.

#модули #howdoi
Wikipedia в Python

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

Устанавливается этот модуль через пакетный менеджер pip. А использовать его можно без всяких трудностей – всё самое важное показано на картинке.

#модули #wikipedia
Дизассемблирование

Встроенный модуль dis позволяет декомпилировать написанную вами программу в байт-код Python.

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

#модули #dis
Немного про цифры и юникод

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.

Это влияет на такие функции, как int, unicode.isdecimal и даже re.match. Предупрежден – значит вооружен.

#числа #юникод