№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Напишите функцию на Python, которая принимает на вход список чисел и возвращает наибольшую возрастающую подпоследовательность (непоследовательные числа, идущие в порядке возрастания) из исходного списка
Для решения этой задачи используется динамическое программирование. Мы создаем массив dp
, где dp[i]
представляет собой длину наибольшей возрастающей подпоследовательности, заканчивающейся в nums[i]
. Затем мы выполняем двойной цикл, чтобы найти наибольшую длину для каждого элемента. После этого мы определяем саму подпоследовательность, начиная с наибольшей длины и двигаясь обратно по массиву dp
.
Пример использования:
python
nums = [3, 12, 5, 8, 10, 2, 1]
result = longest_increasing_subsequence(nums)
print(result) # Output: [3, 5, 8, 10]
[3, 12, 5, 8, 10, 2, 1]
, которой будет [3, 5, 8, 10]
, и выведет ее в консоль.
Читать полностью…
Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика
Декорирование функций - это, наверное, самая сложная среди базовых и самая простая среди продвинутых фич языка Python.
Смотреть статью
Задача
Напишите функцию Python, чтобы найти отличную пару чисел, произведение которых нечетно из последовательности целочисленных значений.
Как разработчику увеличить доход?
Расширять список своих скиллов! Начать можно с бесплатного открытого урока «Шаблон проектирования ""Цепочка обязанностей""» (https://otus.pw/hze4/) от OTUS.
На вебинаре:
- рассмотрим превращение элементов поведения в объекты;
- проанализируем его на конкретном примере, формируя диаграмму классов;
- узнаем, как использовать шаблон «Цепочка обязанностей» для решения различных задач;
- покажем, как создать классы обработчиков и связать их в цепочку так, чтобы сообщение было обработано последовательно каждым обработчиком;
- разберем возможности настройки приоритета и условий обработки определенных сообщений.
Занятие пройдёт 5 декабря в 20:00 мск в рамках курса «Архитектура и шаблоны проектирования». После урока вы сможете продолжить обучение в рассрочку.
Для бесплатного участия и получения записи пройдите короткое тестирование прямо сейчас: https://otus.pw/9k86/?erid=LjN8KM8nR
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Всегда мечтал быть айтишником? Освой новую профессию промт-инженера! Гарантия трудоустройства и низкая конкуренция!
Приходи на бесплатный вебинар и узнай как:
- Повысить свой доход на рабочем месте, создавая нейро-сотрудников
- Получить новую специальность и увеличить доход на 30-40%
- Создавать нейронки и продавать на заказ от 1 млн за проект
- Зарабатывать на фрилансе от 300 000 рублей
- Найти хобби, которое прокачает твой мозг и сделает жизнь ярче
Обо всем ты узнаешь на бесплатном вебинаре от AI University.
Вот ссылка, жми СЮДА
Реклама. ООО "ТЕРРА ЭЙАЙ". ИНН 9728019395. erid: LjN8K5zyK
__init____init__
является методом, который используется для инициализации объектов при создании экземпляров классов. Этот метод называется «конструктором» класса и выполняется автоматически при создании нового объекта данного класса.
Когда вы создаете новый объект путем вызова конструктора класса, передавая ему аргументы, эти аргументы могут быть использованы для установки начальных значений атрибутов объекта. Внутри метода __init__
вы можете определить, какие атрибуты должны быть созданы для объекта и как им присвоены начальные значения.
#для_начинающих
Паттерн проектирования «Фасад»
Паттерн проектирования «Фасад» (Facade) используется для предоставления унифицированного интерфейса к группе интерфейсов подсистемы. Он позволяет скрыть сложность и детали взаимодействия между различными компонентами системы, предоставляя клиенту более простой и удобный способ взаимодействия.
#для_продвинутых
«Циклический сбор мусора»
«Циклический сбор мусора» — это процесс автоматической уборки памяти, занимаемой объектами, которые больше не доступны вашей программе. В Python есть встроенный механизм сборки мусора, который автоматически освобождает память, занимаемую объектами, на которые нет ссылок.
Вы можете влиять на этот процесс с помощью модуля gc (garbage collector).
Обычно нет необходимости вручную управлять сборкой мусора, так как Python самостоятельно заботится о освобождении памяти. Однако в некоторых случаях, особенно при работе с большими объемами данных или встроенными объектами, ручное управление сборкой мусора может быть полезным.
#для_продвинутых
unit-тесты
Unit-тесты (или unittests) — это метод тестирования ПО, который позволяет проверить, работает ли отдельная единица кода (обычно функция или метод) так, как ожидается. Библиотека unittest
входит в стандартную библиотеку Python и предоставляет набор инструментов для написания и выполнения тестовых сценариев.
Писать хорошие unit-тесты — это важный аспект разработки программного обеспечения. Хорошие тесты обеспечивают надежность и поддерживаемость кода, помогают выявлять ошибки и улучшать качество продукта.
#для_начинающих
Для чего нужны линтеры и как они делают код чище? Исследуем эту тему вместе 5 декабря на Python Community🔥
👇Регистрация👇
https://forms.gle/UMJ2Gz7CQJZdz8ny5
(количество мест ограниченно).
⏰05.12.2023 18:30 (CET)
📍Офис Andersen в Варшаве: ул. Рондо Дашиньского, 1, 23 этаж
Язык: Английский
В ходе митапа, мы с вами:
💡выясним, что такое линтеры и как они повышают качество кода, отлавливают ошибки, помогают соблюдать стандарты и обеспечивают безопасность;
💡узнаем о преимуществах и возможных подводных камнях использования линтеров в разработке проектов;
💡сравним популярные линтеры для Python.
Обещаем мега-познавательную встречу с кучей новых знакомств и вкусняшек😉
Ждем вас!
Закон Амдала
Закон Амдала — это концептуальное правило, описывающее ограничения ускорения, которое можно достичь при оптимизации только части вычислений в программе. Он был предложен Генри Амдалом в 1967 году и является важным принципом в области параллельных вычислений.
Правило Амдала утверждает, что общий выигрыш в производительности от ускорения какой-либо части программы ограничен долей этой части, которая не может быть параллельно выполнена, плюс долей последовательных вычислений.
#для_продвинутых
Что такое линейная сложность сортировки?
Линейная сложность сортировки обозначает алгоритм сортировки, который имеет временную сложность, пропорциональную количеству элементов в сортируемом массиве (или коллекции). В математической нотации линейная сложность обозначается как O(n), где "n" - количество элементов.
Примером линейной сортировки может быть алгоритм «сортировка подсчётом» (counting sort). В этом алгоритме создается дополнительный массив для подсчета количества вхождений каждого элемента. Затем на основе этой информации о количестве вхождений каждого элемента строится отсортированный массив.
#для_начинающих
Что такое файлы .pth
Файлы с расширением .pth — это файлы, которые могут быть использованы для добавления директорий в путь поиска модулей Python. Директивы .pth выполняются при запуске интерпретатора Python и добавляют определенные каталоги в переменную sys.path.
Это удобно, когда нужно импортировать модули из нестандартных директорий без необходимости переноса файлов в директории по умолчанию.
#для_начинающих
⚡️Участвуй в онлайн-хакатоне GO.ALGO с призовым фондом 1 200 000 рублей!
Приглашаем специалистов по Data Sciene, ML-специалистов, Аналитиков, Back-end разработчиков, Front-end разработчиков, Дизайнеров!
Что тебя ждет:
🔹 С головой погрузишься в интересную задачу: Разработаешь торговые сервисы на основе данных MOEX и поможешь инвесторам стать успешнее;
🔹 Познакомишься с людьми со схожими интересами, и сможешь поучаствовать в фановых активностях
Помимо главного денежного приза в 1 200 000 рублей, тебя ждет фирменный мерч и подарки!
Если нет своей команды — поможем ее собрать.
Регистрируйся и вступай в чат участников, получи ответы на волнующие вопросы, найди команду или создай свою.
▶️Регистрация уже идет, успевай подать заявку по ссылке: https://tglink.io/55c4d3822b56?erid=LjN8K43Rv
Реклама. ООО "ФИЗТЕХ ДЖЕНЕЗИС". ИНН 7735184156.
Что такое модуль __init__.py?
Модуль __init__.py
является частью организации пакетов (packages) в Python. Этот файл используется для определения директории как пакета и может содержать код и переменные, которые будут доступны при импорте пакета. Важно отметить, что __init__.py
не является обязательным для всех директорий, но он необходим, чтобы Python интерпретировал директорию как пакет.
#для_начинающих
Шифрование и расшифровка паролей
Приведенный ниже скрипт выполняет шифрование и дешифрование текста с использованием пакета cryptography.
В приведенной выше реализации ключ шифрования генерируется с помощью метода Fernet.generate_key() и сохраняется в файле для дальнейшего использования.
Шифрование и дешифрование текста выполняются с использованием класса Fernet из пакета cryptography , где текст шифруется с помощью метода encrypt() и расшифровывается с помощью метода decrypt().
Ход короля
Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки.
Программа должна вывести «YES», если из первой клетки ходом короля можно попасть во вторую, или «NO» в противном случае.
Отправка электронных писем
Приведенный ниже скрипт использует библиотекуSMTP
, , чтобы отправлять электронные письма указанным получателям. Реализация может быть изменена в зависимости от варианта использования.
В приведенной выше реализации скрипт использует данные отправителя и получателя, а также тему и текст сообщения. Затем скрипт подключается к SMTP-серверу Gmail, форматирует сообщение и отправляет его с помощью метода sendmail() . Наконец, скрипт выводит сообщение, указывающее, что электронное письмо было успешно отправлено, и отключается от SMTP-сервера.
Подробнее про smtplib можно почитать здесь.
Протоколы в Python
В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyping), то есть — осуществлять проверку совместимости классов исключительно на основе анализа их атрибутов и методов.
Смотреть статью
Асинхронные микросервисы на Python
Микросервисы – это парадигма, где приложение разбивается на небольшие независимые компоненты, каждый из которых отвечает за конкретную функцию.
Смотреть статью
Салют, GigaChat!
Речевые технологии и большие языковые модели.
Приглашаем ML-разработчиков и Data Science-специалистов на встречу с командами разработки продакшен GigaChat и речевых технологий.
📍 Онлайн / Офлайн в Москве
🗓 4 декабря в 18:00 (МСК, GMT+3)
В программе:
✔ Григорий Лелейтнер — «Что мы улучшили в процессе pre-training LLM»
✔ Эмиль Шакиров и Никита Сидоров — «Наш путь в процессе Alignment для совершенства моделей глубокого обучения»
✔ Александр Максименко — «Speech-only Pre-training: обучение универсального аудиоэнкодера»
✔ Григорий Федоров — «Intended Query Detection: распознаем только нужные запросы»
✔ Гриша Стерлинг — «Как мы заставили модель синтеза речи 2023 года говорить лучше модели 2018 года»
Участвуйте в дискуссиях с другими участниками митапа и задавайте вопросы спикерам во время докладов.
Количество мест в офлайне ограничено. Для участия необходимо зарегистрироваться на сайте.
Реклама. ПАО Сбербанк. ИНН 7707083893.
Погрузитесь в мир 🐍 Python и станьте разработчиком за рекордные 4 месяца с курсом от Merion Academy!
Все, кому интересно, получат 🚀 2 бесплатных урока, где познакомитесь с базой и сразу начнете писать свою первую программу.
🎁 Бонус – бесплатный интенсив по карьере, где HR-эксперты поделятся секретами успешного резюме и расскажут как проходить собеседования. 📚 А еще бесплатный гайд по изучению Python, который будет полезен для всех, кто хочет освоить этот язык.
🕺 У ребят одна из самых доступных цен на рынке, которая в разы ниже, чем в других онлайн-школах, а еще есть рассрочка, чтобы учиться сейчас и платить по чуть-чуть ежемесячно.
👉 Регистрируйтесь по ссылке чтобы забрать бесплатные уроки, интенсив по карьере и гайд.
Merion Academy – это экосистема доступного образования, которая включает в себя:
📍IT-базу знаний с полезными статьями.
📍merionacademy">Youtube-канал ,где простыми словами говорят о сложных вещах.
📍 IT-академию, где обучат востребованным направлениям по самым доступным ценам.
🐍 Курс «Python для Пентестера»
Старт: 4 декабря
Длительность: 3,5 месяца
ℹ️ На курсе вы изучите продвинутые техники использования Python, научитесь писать прикладной софт, который используется пентестерами в их профессиональной деятельности. Максимум практики, чат с живым общением и квалифицированная кураторская поддержка!
🎓 После онлайн-курса «Python для пентестера» вы сможете:
✔️ Эффективно использовать базы данных и сеть Интернет;
✔️ Получать данные от сайтов в автоматическом режиме;
✔️ Писать прикладные программы на Python.
Выдаём удостоверение о повышении квалификации при успешной сдаче экзамена. Возможна оплата в рассрочку
🎁 По промокоду CODEBY вы получите скидку 10%!
📌 Узнать подробнее о курсе
Реклама. ООО "АКАДЕМИЯ КОДЕБАЙ". ИНН 9706020333.
Паттерн проектирования «Стратегия»
«Стратегия» (Strategy) является одним из шаблонов поведения, определенных в книге «Банды четырёх» (Gang of Four, GoF). Этот паттерн относится к категории поведенческих паттернов и решает задачу определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет клиентскому коду выбирать нужный алгоритм независимо от его использования.
Основная идея паттерна «Стратегия» заключается в выделении алгоритмов в отдельные классы (стратегии) и предоставлении клиентскому коду возможности выбирать и подменять эти стратегии без изменения самого клиентского кода. Таким образом, паттерн способствует легкости поддержки, расширения и внесения изменений в систему.
#для_продвинутых
memory_profilermemory_profiler
— это сторонний модуль для языка программирования Python, который предоставляет инструменты для профилирования использования памяти в ваших программах. Этот модуль позволяет отслеживать изменения объема памяти во время выполнения кода, выявлять утечки памяти и оптимизировать использование памяти.
Для использования memory_profiler
вы должны установить его сначала. Это можно сделать с помощью инструмента установки пакетов Python, такого как pip
.
#для_начинающих
🔥 ПОЛУЧИ НОВУЮ ПРОФЕССИЮ. ОПЛАТА ОБУЧЕНИЯ ПОСЛЕ ТРУДОУСТРОЙСТВА
ПРОГРАММЫ ОБУЧЕНИЯ:
✅ Интернет-маркетинг
✅ Веб-разработка
✅ Дизайн
✅ Геймдизайн
✅ Управление
✅ E-commerce
ПРОЦЕСС ОБУЧЕНИЯ И ПОИСКА РАБОТЫ:
🔹 Вы осваиваете профессию на курсе
🔹 Мы помогаем вам найти работу
🔹 После трудоустройства вы оплачиваете обучение
Для получения подробной информации переходите по ссылке
Реклама. Университет «Синергия» ИНН 7729152149
✌️ Привет! На связи организатор онлайн-конференций Podlodka Crew.
Проект на Python вырос и стал плохо сопровождаться? Всё время уходит на поиск багов, а фичи выпускаются раз в месяц? Нагрузка растёт, а что делать не понятно?
🐍 Приходите на Podlodka Python Crew — обсудите свои боли и проблемы с экспертами из КРОК, Точка, Контур, X5 Tech, Skillbox, а также в компании единомышленников.
Стартуем 4 декабря. Свежие подробности сессий:
🔸Обсудим, а нужны ли практики из Java в коммерческой Python-разработке. В формате круглого стола проговорим основные вопросы проектирования enterprise-приложений на python. Вас ждёт дискуссия про выбор архитектуры, соблюдение слоёв, связи и контексты, абстрактные классы.
🔸Узнаем, как переезжать на pyproject и tox. Разберёмся с bash-скриптами, настроим лаконичный CI/CD с помощью простых инструментов.
🔸Послушаем про внедрение feature flags на тернистом пути к TBD.
Поспешите забрать свой билет на сайте: https://podlodka.io/pythoncrew
Что такое wheels и eggs?
В Python wheels и eggs — это форматы пакетов для установки и дистрибуции пакетов с помощью утилиты управления пакетами pip.
Egg был первоначально разработан как формат дистрибуции пакетов для Python, но был заменен wheels. В отличие от wheels, eggs могут содержать .pyc файлы, что может привести к проблемам при установке на другой платформе или версии Python.
Wheels — это новый формат дистрибуции пакетов, который был введен в Python 2.7. Он поддерживается большинством пакетов на PyPI и имеет множество преимуществ.
#для_продвинутых
Хвостовая рекурсия
Хвостовая рекурсия — это вид рекурсии, при котором рекурсивный вызов функции происходит в конце функции и результат этого вызова сразу возвращается, без выполнения каких-либо дополнительных операций. Хвостовая рекурсия может быть оптимизирована интерпретатором Python, чтобы избежать переполнения стека и улучшить производительность.
Для создания хвостовой рекурсии в Python, вы можете использовать декоратор @functools.lru_cache
в сочетании с аргументами, которые передаются функции.
#для_продвинутых
__next__ __next__
— это метод, который используется в Python для реализации протокола итератора в пользовательских классах. Протокол итератора позволяет объекту перебирать элементы один за другим. Этот метод должен быть определен в классе, чтобы он мог быть итерируемым с помощью цикла for
.
#для_начинающих