#python python... PYTHON 🔛 🚀
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
Forwarded from Python Community
⚡️ Ответ на предыдущую задачу
Forwarded from Python Community
⚡️ Переопределяем операторы

В Python почти каждый оператор — метод класса. Например, + — это __add__, сравнение (==) — это __eq__, а with__enter__, __exit__.

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

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

#теория #operators
Forwarded from Python Community
⚡️ Модуль collections, класс Counter

collections
— модуль, предоставляющий специализированные типы данных. Он хранит в себе различные классы, такие как namedtuple, counter, deque и множество других. Об одном из них мы и поговорим.

Counter — словарь, позволяющий узнать какое количество раз повторяются элементы в итерируемом объекте (list, string).

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

most_common(n) — возвращает n самых повторяемых объектов.

elements() — возвращает итератор для всех элементов.

#миниурок #Counter
Forwarded from Python Community
⚡️ Модуль collections. Класс OrderedDict

Мы уже рассказывали про модуль collections, а если конкретнее — класс Counter. В этот раз разберём OrderedDict.

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

popitem() — Возвращает и удаляет последний элемент из упорядоченного списка.

move_to_end(key) — перемещает ключ в конец. Если передан параметр last, перемещает ключ в начало.

Подробнее о данном классе можете почитать тут.

#миниурок #collections
Forwarded from Python Community
⚡️ Оператор yield

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

Записывается он вместо return, принимая число, которое должна вернуть функция.

Если же обычный метод возвращает какое-то значение, то генератор возвращает себя, благодаря чему мы можем пройтись по нему используя циклы или функцию next().

#теория #итераторы
Forwarded from Python Community
⚡️ Модуль collections. Класс deque

Раннее мы писали про Counter и OrderedDict, настало время поговорить про deque.

deque — класс, предоставляющий двойную очередь (то есть элементы можно брать и с начала и с конца). Его основное преимущество над списком — скорость при изменении размера. Добавление и удаление элементов имеет O(1), а у списка — O(n).

append(x), appendleft(x) — добавляет элемент в конец/начало.

pop(), popleft() — возвращает и удаляет элемента с конца/начала очереди.

rotate(n=1) — перемещает n объектов с конца в начало очереди

#миниурок #collections
Forwarded from Python Community
⚡️ Модуль collections. Тип namedtuple

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

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

namedtuple(typename, field_names) — создаёт тип кортежа с именем typename и атрибутами field_names, и возвращает тип.

#миниурок #collections
Forwarded from Python Community
⚡️ Итераторы и генераторы

Если вы подписаны на канал довольно давно, то, наверное, уже слышали эти слова, но что они значат?

Итератор — объект, по которому можно «пройтись» с помощью цикла. map, filter, zip, все они возвращают итераторы, как и итерируемые объекты (list, set, dict). Основной их особенностью является наличие метода __next__.

Генератор — тот же самый итератор, но «пройтись» по нему можно только один раз. Его используют, например, при создании генераторных списков. Ещё генераторами являются функции, которые используют yield.

#теория
Forwarded from Python Community
⚡️ Методы генераторы

В отличие от итераторов, у генераторов есть собственные методы, позволяющие контролировать их работу. Их три: close, throw, send.

close() — останавливает генератор на следующем проходе.

throw() — выводит ошибку на экран и останавливает выполнение генератора сразу же. С помощью них можно контролировать бесконечные генераторы.

send() — самый интересный метод. Позволяет передавать значения генератору. Первым всегда должно быть None, что бы запустить его.

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

#теория
Forwarded from Python Community
⚡️ Находим стилистические ошибки

Дабы избежать конфликтов между программистами, разработчики создали соглашение под названием "PEP 8", в котором описывались правила оформления кода.

Но хранить их все в голове довольно тяжело, поэтому придумали flake8 — скрипт, что позволяет проверить программу на стилистические ошибки.

Установка: pip install flake8

Запускается скрипт довольно просто, достаточно вписать в терминал flake8 file1.py file2.py или flake8 folder_name.

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

#миниурок #flake8
Forwarded from Python Community
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Профилируем код

В этот раз мы рассмотрим профилировщик под именем py-spy, позволяющий отслеживать потребление ресурсов, не редактируя код.

Установка: pip install py-spy

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

py-spy top — отображает нагрузку на процессор. Очень похожа на команду top из Unix.

py-spy record — записывает использование ресурсов в svg файл.

py-spy dump — собирает стек вызовов и выводит на консоль.

На гиф — результат работы первой команды. Если вам стало интересно, то можете посетить github страницу проекта.

#миниурок #pyspy
Forwarded from Python Community
⚡️ Бесконечные итераторы

Продолжаем рассказывать про итераторы, а если быть конкретнее, про модуль itertools. itertools — модуль, хранящий в себе множество готовых итераторов, как, например, groupby.

count(start, step=1) — итератор, считающий от start, добавляя step до бесконечности. Он чем-то напоминает range, но без ограничений.

cycle(elems) — бесконечное количество раз возвращает элементы внутри elems по порядку.

repeat(elem, n) — возвращает n раз или бесконечно значение elem.

#миниурок #itertools
Forwarded from Python Community
⚡️ Замеряем время выполнения программы

Многие новички используют time или встроенные в ОС приложения, но это не верно. Лучше использовать timeit, поскольку он может более точно рассчитать, сколько занимает выполнение кода, независимо от ОС.

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

timeit.timeit(code, setup='', timer, number=1_000_000) — запускает код number раз. Но перед этим выполняет строку setup, которая не входит в время, измеряемое таймером. Эта основная функция больше вам не понадобится.

Если вам лень запускать IDE, можете воспользоваться терминалом, вписав python3 -m timeit "print('Hello world')".

А если вам стало интересно, то можете посетить страницу документации.

#миниурок #timeit
Forwarded from Python Community
⚡️ Продолжаем рассматривать модуль itertools

Думаю, стоит вам ещё рассказать про этот модуль и интересные функции. Начнём!

zip_longest(a, b, fill_value) — очень удобный итератор. Работает также как и zip, но если длина списков разная, заполняет их fill_value.

takewhile(func, seq) — возвращает значения из seq, пока func не вернёт False.

chain(a, b,...) — соединяет два и более итерируемых объектов в один.

product(a, b...) — декартово произведение итерируемых объектов.

#миниурок #itertools
Forwarded from Python School
Автоматизация и скриптинг

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

Не беспокойтесь, питон тебя прикроет. Есть множество вещей, которые вы можете автоматизировать всего за 4-5 строк кода. От установки заданий cron и напоминаний до загрузки ваших любимых видео на YouTube, вы можете сделать все это с помощью нескольких строк в python.
Forwarded from Python School
Аннотации типов

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

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

С версии Python 3.5 при определении функции можно добавлять аннотации типов

Также они позволяют использовать инструменты для проверки типов, чтобы отлавливать ошибки TypeError.
Forwarded from Python School
Data classes

Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:

• возврат нескольких значений или словарей;
• класс данных требует минимального количества кода;
• возможность сравнения классов данных;
• возможность распечатать класс данных для отладки при помощи repr;
• снижение вероятности ошибок в связи с требованием класса данных type hints
Мы начинаем публиковать лекции летних школ Академии Яндекса на нашем YouTube! ⚡️

Сегодня — курс лекций Школы бэкенд-разработки 2021 для тех, кто пишет на Python. Скоро поделимся записями по фронтенду, мобильной разработке, менеджменту и дизайну. Ловите ссылку на плейлист: https://clck.ru/YVduf

Авторы этих видео — опытные разработчики Яндекса. Лекции рассчитаны на тех, кто уже знает основы Python, хочет углубить и систематизировать знания. Из курса вы узнаете тонкости построения архитектуры и инфраструктуры, подходы к тестированию, важнейшие метрики и алгоритмы в бэкенд-разработки, основы асинхронного программирования и работы с legaсy-кодом.

В рамках летних школ студенты не только слушали лекции, но и погружались в промышленную разработку, делали реальные проекты бок о бок с менторами и ребятами других направлений. Чтобы не пропустить новый набор и поучаствовать в следующих школах, оставляйте заявку на сайте Академии: https://clck.ru/YVdB3
Forwarded from Python Academy
Делаем планировщик задач 

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

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

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

#schedule