Python School
93K subscribers
1.98K photos
5 videos
555 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official
Download Telegram
Станьте бэкендером с дипломом МФТИ

Бэкенд-программисты отвечают за скрытую часть IT-продукта. Пользователю сложно оценить их вклад в разработку, зато с этим отлично справляется рынок — у бэкендеров одни из самых высоких зарплат в сфере.

В онлайн-магистратуре Нетологии и МФТИ «Разработка IT-продукта» готовят востребованных бэкенд-разработчиков. Это глубокая программа с акцентом на практику: семинары, кейсы партнёров, хакатоны и 5+ проектов для портфолио. А ещё, никаких поездок к первой паре — все занятия проходят онлайн.

Вы научитесь:

- разрабатывать бэкенд часть веб-приложений на Python, Java и Go;
- строить функциональный API;
- синхронизировать работу веб-приложения с базами данных.

МФТИ — ведущий технический вуз России. Формат дипломной работы здесь можно выбрать самостоятельно: научное исследование, корпоративный или собственный стартап. Если выбираете путь предпринимателя — университет поддержит вас грантами, стипендиями и консультациями. Выпускники получат государственный диплом и все льготы очного обучения.

🔗Оставить заявку: https://netolo.gy/df0b

Реклама. ООО "Нетология". Erid 2VSb5z3pU1W
Сравнение быстродействия def и lambda-функций Python. Производные функции

А производная для функции построения графика — это же самая функция с определенными аргументами.

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

Вернёмся к первому. В случае проверки скорости создания функции, функция_для_замера() будет иметь одну цель — создать внутри себя def или lambda функцию. Её мы будем вызывать множество раз, и каждый раз она будет создавать одну и ту же функцию заново.
Обучение в магистратуре в Центральном университете сразу на 3-м курсе бакалавриата
Центральный университет — современный вуз, созданный вместе с Т-Банком, Авито и другими топовыми IT-компаниями.

Обучение занимает 20 часов в неделю, занятия проводят в центре Москвы профессоры из МГУ, МФТИ, РЭШ и практики из индустрии.
У каждого студента будет:
— личный ментор по траектории обучения;
— доступ к карьерному центру с коучами и консультантами;
— опыт работы в проектах 30+ компаний-партнеров уже во время обучения;
— диплом гособразца.
Чтобы выиграть грант на обучение до 1,2 млн рублей: участвуйте по этой ссылке.
erid:2VtzqxWHrme
Реклама, АНО ВО «Центральный университет», ИНН 7743418023
Сравнение быстродействия def и lambda-функций Python. Производные функции

Слабонервным людям, ненавидящим многоуровневые вложения, не читать.

Для ранее описанных общих функций можно создавать бесконечно много проиводных. Для производной замера скорости структура такая
Сравнение быстродействия def и lambda-функций Python. Функции для упрощения жизни

Кому захочется повторять одно и то действие, но с разными параметрами? Никому. Поэтому, есть некоторые вспомогательные функции, для рисования графика по заданным параметрам, для создания черепахи. Кстати, о последнем — черепахи тоже заносятся в общий словарь.
Сравнение быстродействия def и lambda-функций Python. Общие функции

Всего у нас будет 2 диаграммы: полная и усредненная. В каждой по 2 графика: для def и lambda функций. Всего нам потребуется 4 черепахи.
Список значений для 1 и 2 графика очевиден — несколько результатов выполнения замера скорости. С 3 и 4 всё сложнее — нужно найти среднее арифметическое одного из 2 первых графиков.

Дабы слишком не заморачиваться над тем, чтобы график никуда не вылезал, найдём разницу между каждым элементом каждого графика и средним значением между средними арифметическими из 1 и 2 графика. В итоге, на графике мы будем видеть не общее значение, а разницу.
Сравнение быстродействия def и lambda-функций Python. Общие функции

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

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

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

Более эффективный подход к решению этой задачи заключается в использовании функции join()
Настраиваемый логгер-декоратор

Начнем с примера использования. Так мы не перегружаем внимание внутренней сложностью и повышаем шансы создать удачный интерфейс модуля. На этом принципе основана разработка через тестирование — test-driven development (TTD).

У класса Logger есть метод log_msg(), который можно использовать напрямую внутри функций.
Анатомия декоратора в Python

Создадим декоратор @hello_decorator.

Декоратор в Python — функция, которая принимает функцию/класс и возвращает функцию/класс. В примере декоратор hello_decorator() принимает функцию f(), и возвращает функцию wrapper().
Сложение списков

Не всегда операторы в python ведут себя так, как мы привыкли. Например сложение списков.

Как видно, инструкция 28 в случае + простое сложение, а в случае += — сложение на месте, которое не приводит к созданию нового списка. += в данном случае сопоставим по производительности с list.extend.
Генераторные фунции

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

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

Попробуем использовать генераторные выражения (для получения среза будем использовать функцию islice из itertools, которая возвращает итератор по срезу)

Итог: увеличение производительности более чем в 3 раза.
Списковые включения

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

Например у нас есть большой список словарей (объявления контекстной рекламы). Зададим начальное время выборки и конечное.

И попробуем выбрать все объявления, ставка которых выше 600 и дата попадает в выбранный интервал. Затем возьмем первые 1000 элементов полученного списка.

Как видим этот метод работает быстрее.
Всего за 5 минут определите подходящую вам IT-профессию.

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

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

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

Реклама. Информация о рекламодателе по ссылкам в посте.
Однострочный условный оператор (тернарный оператор)

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

Использование тернарного оператора позволяет упростить код, особенно когда нужно выполнить простое условие и присвоить значение одной переменной на основе этого условия.
Сравнение быстродействия def и lambda-функций Python. Производные функции

А производная для функции построения графика — это же самая функция с определенными аргументами.

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

Вернёмся к первому. В случае проверки скорости создания функции, функция_для_замера() будет иметь одну цель — создать внутри себя def или lambda функцию. Её мы будем вызывать множество раз, и каждый раз она будет создавать одну и ту же функцию заново.
Использование enumerate для нумерации элементов в цикле

Функция enumerate в Python — это удобный способ получать одновременно индекс и значение элемента при итерации по последовательности. Она особенно полезна для тех, кто часто работает с циклами и списками, и позволяет сделать код более чистым и читабельным.

Использование enumerate упрощает обработку последовательностей, делая код более лаконичным и легким для понимания.
Станьте Дизайнером за 0₽

Зарплата начинающего дизайнера от 50 000₽, а стоимость обучения на профессию в онлайн-школах от 120 000 до 220 000 рублей.

Прямо сейчас GeekBrains отдают бесплатно 5 курсов по IT, в том числе и курс по дизайну.

Переходите по ссылке и забирайте курс по дизайну. Акция продлится до 8 июля: https://go.redav.online/0a6d2b2ddc19b1f0?erid=LdtCK7b7u&m=1
Переселения

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