TGINSIGHT CHAT
Python Academy
@python_academy
EducaciónPython Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Posts recientes
Pág. 15 de 85 · 1,014 posts
Корутины Некой противоположностью генераторов являются корутины. Для примера напишем функцию, которая будет в бесконечном цикле подставлять значение и выводить строку. Обратите внимание на то, как было использовано ключевое слово yield. При таком написании создаётся не генератор, а корутина, что позволяет не просто генерировать значения, но и принимать их. Функция работает так: при отправке значения через метод send локальная переменная name принимает его, а далее значение подставляется в строку и выводится на экран. #генераторы#корутины
Hashtags
Publicado 16 dic
Открыть ИТ-компанию в два клика На портале Госуслуг запустили «жизненную ситуацию», которая помогает пройти весь процесс запуска ИТ-бизнеса полностью онлайн. Сервис работает как пошаговый навигатор: подсказывает, как определить вид деятельности, собрать документы, зарегистрировать компанию онлайн, получить аккредитацию и оформить права на программное обеспечение. Сервис опирается на актуальные требования и сразу показывает, какие меры поддержки доступны ИТ-компаниям. Все действия — в одном месте, без лишних обращений и поиска информации. Развитие цифровых сервисов идёт по нацпроекту «Экономика данных».
Типизация в Python с использованием модуля typing В Python модуль typing предоставляет возможность добавлять подсказки типов для переменных, функций и классов, что делает код более явным и понятным. Зачем использовать типизацию? 1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций. 2. Предотвращение ошибок: Статические анализаторы кода, такие как mypy, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов. 3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов. Пример использования типизации для переменных и функций: from typing import List, Tuple def multiply(a: int, b: int) -> int: return a * b def process_list(data: List[int]) -> Tuple[int, int]: sum_values = sum(data) average = sum_values / len(data) return sum_values, average # Пример использования result1 = multiply(5, 3)# Ожидается int data_list = [1, 2, 3, 4, 5] result2 = process_list(data_list)# Ожидается Tuple[int, int] Здесь a: int и b: int указывают на типы аргументов функции, а -> int и -> Tuple[int, int] - на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных. Типизация делает ваш код более структурированным, улучшает его читабельность и может служить документацией, облегчая разработку. #python#typing
Строим графики Для построения графиков в Python существует библиотека Matplotlib. Это мощный инструмент для визуализации данных. Сначала нам нужен массив с данными, которые мы хотим изобразить на графике. Это может быть, например, список или numpy массив. Далее метод plt.plot(data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями. Метод plt.show() откроет графическое окно с изображенным графиком. Пример графика можно посмотреть здесь, а официальную документацию по Matplotlib можно почитать тут. #matplotlib
Hashtags
Выполняем код по расписанию Часто от программиста требуется написать код, который должен выполняться в определенный промежуток времени или по расписанию. Для решения этой проблемы существует много решений, но одно из них — это библиотека aiocron. Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция attime будет выполняться каджую минуту с 6 утра до 10 вечера в рабочие дни недели. Подробнее о написании своих расписаний можно почитать тут. #aiocron
Hashtags
Publicado 13 dic
Добавляем классу большую функциональность На прошлой неделе мы объясняли декоратор @classmethod, а сейчас рассмотрим @staticmethod. @staticmethod можно воспринимать как метод, который "не знает, к какому классу относится". Он просто получает переданные аргументы, без неявного первого аргумента, и его определение не изменяется через наследование. Еще раз: статические методы прикреплены к классу лишь для удобства — и не могут менять состояние ни класса, ни его экземпляра. Зачем использовать. Статические методы делают код более читабельным и повторно используемым. Его также удобнее использовать для импорта по сравнению с обычными функциями, поскольку функцию не нужно отдельно импортировать. В чем же разница? @classmethod используется в суперклассе для определения того, как метод должен вести себя, когда он вызывается разными дочерними классами. @staticmethod используется, когда мы хотим вернуть объект, независимо от вызываемого дочернего класса.
Использование списков в качестве стеков Стек – абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (last in – first out). В переводе с английского "последним пришёл – первым вышел". Списки в Python имеют удобные встроенные методы, которых достаточно для реализации такой структуры данных. Для добавления элемента в конец стека используем метод append, для извлечения – pop. Программный вид стека применяется для обхода структур по типу графов и деревьев. При реализации рекурсивных функций также будет применяться стек, но в таком случае уже его аппаратный вид. #списки#стек
Дескрипторы Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор. Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса __get__, __set__ или __delete__. После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор. У данного объекта будет переопределено поведение при доступе к атрибуту (__get__), при присваивании значений (__set__) или при удалении (__delete__). #классы#дескрипторы
Hashtags
Работаем со временем без головной боли При работе со временем и датами у встроенных модулей есть несколько неприятных моментов: — Их слишком много: datetime, time, calendar, dateutil, pytz и другие; — В них слишком много типов: date, time, datetime, tzinfo, timedelta, relativedelta и т. д. И вот на днях я наткнулся на пакет arrow, который их решает. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип Arrow. Большой плюс в том, что пакет совместим с основными встроенными типами. Например, выше я преобразовал datetime в Arrow и обратно. Еще из приятных бонусов: там есть функция humanize, которая конвертирует время в читаемый текст. #время#arrow
Официальное упорядочивание словарей Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления. Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше. Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки. #словари
Hashtags
Publicado 9 dic
Как объяснить близким, кем вы работаете? На обеденном перерыве попробовали составить шпаргалку для продуктовых аналитиков с помощью режима голосового общения ИИ-помощника Гигачата. Сохраняйте и рассказывайте маме, девушке или младшему братику, если они не понимают ничего в IT, но хотят узнать о вашей работе чуть больше.
Хэширование Для создания хэш-значений в python существует удобный модуль hashlib, реализующий общий интерфейс для ряда популярных хэш функций и также может использовать функции доступные в системе, предоставляемые с установленным OpenSSL. Использование очень простое, в модуле существует ряд конструкторов, соответствующих названиям хэш-функций. В конструктор мы можем передать байт-строку, хэш которой мы хотим получить, на выходе мы получим объект хэша. Объект хэша мы можем обновить методом update, сконкатенировав тем самым строки, а также можем можем вывести полученное значение с помощью методов digest и hexdigest. Первый возвращает байт-строку, второй - в шестнадцатеричном формате. #hash#hashlib