python_academy | Unsorted

Telegram-канал python_academy - Python Academy

51359

Python Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu

Subscribe to a channel

Python Academy

Оператор неравенства и Дядя Бэрри

Вспомним немного историю: 1 апреля 2009 года выпустили PEP 401, в котором говорилось, что Гвидо ван Россум покидает команду Python.

На его замену должен был прийти Barry Warsaw, который имел официальный статус Friendly Language Uncle For Life (FLUFL) — в переводе, дружелюбный дядя языка на всю жизнь.

И этот Дядя Бэрри предложил заменить "противный" знак неравенства != на <>. Изменения обещали выпустить в последующих версиях, но его можно было протестировать и раньше времени.

Для этого можно импортировать barry_as_FLUFL из пакета __future__. Результат можете посмотреть на картинке сверху.

Это всё, конечно же, было первоапрельской шуткой, но оператор <> всё ещё доступен и является некой пасхалкой.

#пасхалка

Читать полностью…

Python Academy

🎁 Приглашаем на бесплатный урок курса «Python Developer»

📅 Когда: 27.07.23 в 20:00 мск
Тема: Декораторы в Python: инструменты начинающего разработчика для улучшения кода!

На занятии:
- Познакомитесь с декораторами: что такое декораторы, как они помогают упростить модификацию существующих функций, научитесь использовать встроенные декораторы и создавать свои;
- Разберем работу декораторов: проведем подробный разбор того, как работают декораторы в Python, узнаете, как создавать и применять простые декораторы и декораторы с дополнительными аргументами.
- Разберем создание декораторов: научимся создавать свои декораторы, которые позволят добавлять дополнительную функциональность к функциям.

👉 Чтобы попасть на урок и получить запись вебинара нужно зарегистрироваться https://otus.pw/dH94/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2RanynRDf3v

Читать полностью…

Python Academy

Делегирующие генераторы

Давайте создадим простенькую генераторную функцию subgen, которая будет возвращать числа от 0 до переданного аргумента.

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

Цикл, который можно написать в delegator, можно заменить всего лишь одной строчкой. То есть yield from заменяет цикл for, в котором только возвращаются значения через yield.

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

#генераторы

Читать полностью…

Python Academy

Аргументы и параметры командной строки

Для обработки передаваемых аргументов и создания удобный интерфейс командной строки в python есть отличный модуль argparse.

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

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

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

#argparse

Читать полностью…

Python Academy

Превращаем PDF в текст

Думаю, все периодические работают с PDF-документами. И зачастую это ручная и скучная работа. Но Python может автоматизировать даже такую рутинную задачу.

Модуль pdftotext создан именно для работы с документами в PDF формате. Устанавливается он через пакетный менеджер pip, а использовать его проще простого. Все основные операции представлены на картинке выше.

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

#pdftotext

Читать полностью…

Python Academy

Станьте дипломированным специалистом по Data Science и Machine Learning за 4 года на онлайн-бакалавриате от РАНХиГС и Skillbox.

Всё как в классических вузах, только онлайн.

За время обучения вы:

— Освоите язык программирования Python, основные библиотеки и фреймы для работы с ним.

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

— Изучите машинное обучение, нейросети, deep learning, data engineering.

— Освоите soft skills для работы в IT: научитесь управлять производством, проектами и командой.

А по итогу обучения соберёте портфолио из более чем 10 работ и получите диплом государственного образца.

Успейте подать заявку прямо сейчас по ссылке: https://epic.st/L1R5VQ
После этого с вами свяжется специалист приёмной комиссии.

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

Читать полностью…

Python Academy

Ещё вчера они отвечали за код и технологии, а сегодня в их подчинении специалисты, к которым никто не приложил инструкцию. Да, быть начинающим управленцем в IT — рискованно, но интересно. Открывается много новой информации и определений.

Насчёт определений — в карточках собрали несколько ключевых, которые познакомят вас с профессией руководителя в IT поближе. А по поводу новой информации: в Практикуме появился курс по управлению командой разработки с воркшопами, личными консультациями и интерактивным учебником.

Пройдите первый бесплатный урок

Читать полностью…

Python Academy

Создаем бесконечный итератор

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

Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элемента.

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

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

#itertools

Читать полностью…

Python Academy

Влетаем в мир ИИ с ноги — без опыта и знаний кодинга. Всего за 3 вечера эксперты научат вас создавать нейросети и применять их на практике.

Ваши нейронки смогут:
— Делить людей на входящих и выходящих из автобуса
— Обнаруживать возгорания
— Оценивать стоимость квартир и резюме соискателей
— Прогнозировать стоимость полиметаллов
— Распознавать команды умного дома и много чего ещё

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

Бесплатный интенсив ждёт вас по ссылке.

Читать полностью…

Python Academy

Собрать свой ИИ теперь можно с нуля. Без всякого опыта в программировании! Вас научит основатель Университета Искусственного Интеллекта Дмитрий Романов. За 2 дня под его руководством вы создадите сразу 12 нейросетей.

Если вы хотите поближе познакомиться с тем, как работают технологии вроде ChatGPT, Stable Diffusion, а также разобраться в генерации и распознавании речи — этот интенсив для вас.

Зарегистрироваться на легендарный интенсив можно по ссылке.

Читать полностью…

Python Academy

Функция itertools.cycle

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

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

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

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

#генераторы #itertools

Читать полностью…

Python Academy

Генерируем анекдоты

Не самый полезный, но весьма интересный пакет pyjokes выдает различные шутки и анекдоты на 6 языках. Но русский, к сожалению, в это число не входит.

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

Также можно указать категорию в аргументах — особенно классно заходят штуки про Чак Норриса с пометкой 'chuck'.

#pyjokes

Читать полностью…

Python Academy

Именованные кортежи

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

Нет возможности дать имена отдельным элементам, сохранённым в кортеже. Это может повлиять на читаемость кода. И в таком случае используют именованные кортежи namedtuple из collections.

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

#namedtuple

Читать полностью…

Python Academy

Деструкторы

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

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

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

#классы

Читать полностью…

Python Academy

Динамическая замена class

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

Первый принимаемый аргумент является именем класса и становится атрибутом __name__; второй аргумент является кортежем с перечисленными базовыми типами и становится атрибутом __base__; словарь будет являться телом класса и станет атрибутом __dict__.

#type #class

Читать полностью…

Python Academy

Временные файлы

В стандартной библиотеке Python есть модуль tempfile, который содержит классы и методы для корректной работы со временными файлами и директориями.

Функция TemporaryFile создает временный файл в системной директории и возвращает файлоподобный объект.

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

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

#tempfile

Читать полностью…

Python Academy

Превью из длинного текста

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

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

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

#строки #textwrap

Читать полностью…

Python Academy

Собрать свой ИИ теперь можно с нуля. Без всякого опыта в программировании! Вас научит основатель Университета Искусственного Интеллекта Дмитрий Романов. За 2 дня под его руководством вы создадите сразу 12 нейросетей.

Если вы хотите поближе познакомиться с тем, как работают технологии вроде ChatGPT, Stable Diffusion, а также разобраться в генерации и распознавании речи — этот интенсив для вас.

Зарегистрироваться на легендарный интенсив можно по ссылке.

Читать полностью…

Python Academy

Интересная пасхалка

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

Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно — исходный код этого модуля.

Оказывается, интерпретатор CPython сначала запускает файл future.c, когда встречается импорт этого модуля. А само это исключение реализовано на этой строчке.

#пасхалки

Читать полностью…

Python Academy

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

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

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

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

#schedule

Читать полностью…

Python Academy

​​Сортировка пузырьком

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

Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит.

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

#списки #сортировка

Читать полностью…

Python Academy

Простой, но мощный веб-фреймворк

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

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

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

#модули

Читать полностью…

Python Academy

Аннотации типов

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

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

#typing

Читать полностью…

Python Academy

Определение литеральных типов

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

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

#ast #literal_eval

Читать полностью…

Python Academy

Функция reduce

Модуль functools позволяет хорошо раскрыть функциональные возможности Python. Например, в functools есть интересная функция reduce, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.

Таким образом, в примере выше reduce умножает 1 на 2, затем результат этого умножения на 3 и так далее.

#функции #reduce

Читать полностью…

Python Academy

Проверяем скорость интернета

Каждый хоть раз проверял скорость своего интернета на Speedtest. А у них, оказывается, есть не только сайт и приложения, но и пакет на Python для этого дела.

У объекта класса Speedtest методы download() и upload() выдают соответственно скорость скачивания и загрузки данных.

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

#speedtest

Читать полностью…

Python Academy

Используйте dict.get() вместо dict[]

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

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

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

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

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

#словари

Читать полностью…

Python Academy

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

Если коротко, то у Авито все устроено так:

1. Self-review. Сотрудник предъявляет собственные результаты.

2. Сбор отзывов от коллег, которые участвовали в тех же проектах или заинтересованы в результатах.

3. Оценка компетенций. Руководитель собирает артефакты и доказательства по всем компетенциям.

4. Калибровка оценок между руководителями. Это защита оценки перед другими менеджерами с презентацией и фасилитатором. Душно, но эффективно.

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

Проводите у себя ревью? Поделитесь лайфхаками в комментах!

Читать полностью…

Python Academy

Параллельное и асинхронное программирование развязывают руки разработчикам и усиливают их скиллы: помогают выдерживать нагрузки и писать эффективный код, не теряя скорости разработки — ни один крупный проект не обходится без них. Для тех, кто решил изучить принципы асинхронности в Яндекс Практикуме есть курс «Асинхронное программирование на Python». Курс подойдет вам, если:

• у вас есть опыт написания кода на Python;
• вы знакомы с принципами ООП и умеете их применять;
• вы умеете работать с консолью и Git, настраивать рабочее окружение;
• вы понимаете работу БД и SQL, знакомы с HTTP и REST.

На всех этапах вас будут сопровождать опытные разработчики: мы не дадим просесть по учёбе и поможем выкроить время на образование. Вы будете практиковаться на реальных кейсах и положите в портфолио работающие проекты. А карьерные консультации подготовят вас к разговору о повышении или помогут с поиском новой работы. 

Начать учиться

Читать полностью…

Python Academy

Аннотации типов

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

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

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

#типы_данных #аннотации

Читать полностью…
Subscribe to a channel