№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
💡 Хотите стать экспертом в разработке смарт-контрактов на блокчейне?
Сделайте первые шаги 25 июля в 20:00 мск на открытом уроке «Введение в Solidity и создание децентрализованных приложений (dApps)».
Вебинар пройдет в рамках онлайн-курса «Solidity Developer» OTUS и станет интересным и продуктивным началом изучения этой сферы.
✅ На занятии мы:
— Охватим основные концепции Solidity: типы данных, функции, события;
— Погрузимся в практическую работу, разработав и задеплоив смарт-контракт на Solidity с использованием инструмента HardHat;
— Разберем основы работы с Metamask для обеспечения взаимодействия пользователя с децентрализованными приложениями;
— Познакомимся с принципами взаимодействия между фронтендом и смарт-контрактами, используя библиотеку Web3.js, и применим эти знания для создания dApp.
Этот урок даст вам полное понимание ключевых аспектов разработки на базе блокчейн-технологий, а продолжить обучение вы сможете уже на курсе, доступном в рассрочку.
➡️ Для участия зарегистрируйтесь
Нативная интеграция. Информация о продукте на сайте www.otus.ru
+1 в копилку годных каналов про Python
С @python_practics освоишь Python гораздо проще:
📌 полезные сниппеты кода для твоих задач
📌 теория Python понятным языком с примерами
📌 вопросы из собеседований
📌 бесплатные книги и курсы по Python
📌 тесты и опросы для тех, кто не запоминает сухую инфу
PySnooper
PySnooper — это библиотека для отладки, которая позволяет логгировать каждую строку выполняемого кода вместе со значениями переменных. Она полезна, когда нужно понять, как работает код и где происходят изменения переменных.
Для использования необходимо декорировать функцию, которую нужно отладить с помощью @pysnooper.snoop()
. Вид лога можно настроить с помощью параметров: variables — какие переменные отображать, depth — максимальная вложенность структур данных, prefix — префикс для каждой строки лога.
Результат использования pysnooper предоставлен на изображении.
Дана входная строка s, необходимо изменить порядок слов в строке на противоположный.
Слово определяется как последовательность символов, не содержащих пробелов. Слова в s будут разделены как минимум одним пробелом.
Вернуть строку, состоящую из слов в обратном порядке, объединенных одним пробелом.
*s может содержать начальные или конечные пробелы, а также несколько пробелов между двумя словами. Возвращаемая строка должна содержать только один пробел, разделяющий слова.
Чтобы решить данную задачу нам необходимо:
- Удалить начальные и конечные пробелы, а также уменьшить количество пробелов между словами до одного.
- Разбить строку на отдельные слова и сохранить в списке.
- Поменять порядок слов в списке на обратный с помощью метода reverse().
- Объединить слова в строку, разделенную одним пробелом, и вернуть результат.
#разбор_кода
Перегрузка операторов сравнения
Перегрузка операторов сравнения позволяет определить поведение операторов сравнения (таких как ==, !=, <, >, <= и >=) для экземпляров пользовательских классов. Это может быть полезно, когда вы хотите сравнивать объекты на основе определенных атрибутов или свойств.
В этом примере мы определяем класс Person с атрибутами name и age. Затем мы перегружаем операторы сравнения, чтобы они сравнивали объекты Person на основе их возраста. Например, оператор == возвращает True, если возраст двух объектов Person равен, иначе возвращает False.
#это_база
❗️Как развиваться Python-разработчику?
Наращивать объем знаний и навыков. За этим приходите на вебинары, приуроченные к старту онлайн-курса «Python Developer. Professional» в OTUS.
✅ 25 июля — «Аннотации типов»
Обсудим различные виды типизации, заглянем в
теорию типов, рассмотрим примеры и best practice по
аннотированию в Python, поговорим про существующие
type checker'ы
✅ 15 августа — «Code review»
Обсудим основы разработки API с помощью фреймворка FastAPI, рассмотрим пример небольшого приложения и осветим особенности развертывания эксплуатации.
🧑💻 Спикером выступит Станислав Ступников, руководитель разработки в VK. Эксперт с 10+ лет опыта промышленной разработки.
👉 РЕГИСТРАЦИЯ
https://otus.pw/IM3M/Нативная интеграция. Информация о продукте www.otus.ru
#вопросы_с_собеседований
Как решить проблему конфликта зависимостей?
Конфликт зависимостей может возникнуть, когда два разных пакета требуют разные версии одной и той же зависимости.
Эту проблему можно решить с помощью менеджера пакетов pipenv, который автоматически устанавливает версии таким образом, чтобы они не конфликтовали друг с другом.
Вместо requirements.txt pipenv предоставляет файл pipenv с версиями пакетов.
При этом один из недостатков pipenv состоит в том, что создание файла pipenv занимает очень много времени.
Для проверки наличия конфликта зависимостей у пакета можно использовать команду pip check.
TPOT
TPOT (Tree-based Pipeline Optimization Tool) — это библиотека с открытым исходным кодом для автоматизированного машинного обучения (AutoML). Она использует популярную библиотеку Scikit-Learn для преобразования данных и алгоритмов машинного обучения.
Один из примеров использования TPOT — это автоматическое создание и оптимизация конвейера машинного обучения. Выше предоставлен пример кода, который демонстрирует, как использовать TPOT для этой цели:
В этом примере мы импортируем класс TPOTClassifier и загружаем набор данных iris из библиотеки Scikit-Learn. С помощью функции train_test_split мы разделяем набор данных на обучающий и тестовый.
Далее создается экземпляр классификатора TPOT с заданными параметрами generations, population_size и verbosity. Классификатор обучается с помощью метода fit и оценивается с помощью метода score.
В конце оптимизированный конвейер экспортируется в виде скрипта Python с помощью метода export.
Декоратор @classmethod
Декоратор @classmethod
используется для создания методов класса. Метод класса — это метод, который привязан к классу, а не к его экземпляру. Это означает, что вы можете вызвать метод класса на самом классе, а не на его экземпляре.
Один из распространенных способов использования методов класса — это создание фабричных методов, которые возвращают новые экземпляры класса.
В этом примере мы определяем класс MyClass с методом __init__, который принимает один аргумент value. Затем определяем метод класса from_string, который принимает строку и преобразует ее в целое число с помощью функции int. Метод возвращает новый экземпляр класса MyClass, созданный с помощью переданного значения.
Метод класса определяется с помощью декоратора @classmethod
и принимает первым аргументом ссылку на сам класс (обычно называемую cls). Внутри метода мы используем эту ссылку для создания и возврата нового экземпляра класса.
#это_база
Профессия «Python-разработчик». Курс с нуля до трудоустройства за 10 месяцев.
Освойте один из самых популярных языков для бэкенда, научитесь создавать полноценные сайты и веб-приложения и реализовать внутреннюю логику работы программ на фреймворке Django.
🎁 Мы подготовили для вас спецпредложения, чтобы решиться было проще! Выбирайте один из бонусов: 2 месяца академического отпуска, 1 месяц персональных консультаций с наставником и подготовка к техническому интервью, кешбэк 20 000 ₽ после полного прохождения программы.
🔖Готовы попробовать прямо сейчас? Оставьте заявку и мы расскажем, как пройти бесплатные курсы профессии!
Поиск максимальной прибыли
Дан целочисленный массив prices, где prices[i] - это цена данной акции на i-й день. В каждый день вы можете принять решение о покупке и/или продаже акции. В любой момент времени вы можете держать не более одной акции. Однако вы можете купить ее и тут же продать в тот же день. Найдите и верните максимальную прибыль, которую вы можете получить.
Решение работает следующим образом: в методе maxProfit создаем пустой список price_gain, который будет хранить прибыль от каждой сделки. Проходим по списку цен и для каждой пары соседних цен проверяем, если цена на следующий день выше, чем цена на текущий день. Если это так, то вычисляем разницу между этими ценами и добавляем ее в price_gain. В конце возвращаем сумму всех элементов price_gain - это и будет максимальная прибыль.
#разбор_кода
Классы данных
Data classes - это одна из новых функций Python 3.7. Благодаря data classes вам не нужно писать шаблонный код, чтобы получить правильную инициализацию, представление и сравнения для ваших объектов.
Здесь мы используем декоратор dataclass для того, чтобы автоматически сгенерировать методы __init__() и __repr__().
Теперь экземпляр класса Point имеет красивое строковое представление благодаря автоматически сгенерированному методу __repr__(). Также мы можем обращаться к полям x и y напрямую.
#это_база
Перечисление
Функция enumerate() добавляет счетчик к итерируемому объекту и возвращает его в виде объекта перечисления.
Этот перечисляемый объект затем может быть использован непосредственно для циклов или преобразован в список кортежей с помощью функции list().
#это_база
SHAP
SHAP (SHapley Additive exPlanations) — это игровой подход к объяснению вывода любой модели машинного обучения. Он соединяет оптимальное распределение кредитов с локальными объяснениями, используя классические значения Шэпли из теории игр и связанные с ними расширения.
В этом примере мы загружаем модель бостон и разделяем ее на тренировочные и тестовые. Затем мы обучаем модель градиентного бустинга xgboost
на тренировочных данных. Далее мы создаем объект Explainer
из библиотеки shap
, который используется для интерпретации предсказаний модели. Вызываем метод __call__
у объекта explainer
с тестовыми данными в качестве аргумента для получения значений SHAP
для этих данных.
Станьте дипломированным специалистом по Data Science и Machine Learning за 4 года на онлайн-бакалавриате от РАНХиГС и Skillbox.
Всё как в классических вузах, только онлайн.
За время обучения вы:
— Освоите язык программирования Python, основные библиотеки и фреймы для работы с ним.
— Подтянете английский для работы с источниками и профильной литературой, повторите основы математики и статистики для аналитики данных.
— Изучите машинное обучение, нейросети, deep learning, data engineering.
— Освоите soft skills для работы в IT: научитесь управлять производством, проектами и командой.
А по итогу обучения соберёте портфолио из более чем 10 работ и получите диплом государственного образца.
Успейте подать заявку прямо сейчас по ссылке: https://epic.st/p-j_cr
После этого с вами свяжется специалист приёмной комиссии.
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
#вопросы_с_собеседований
Как и для чего используется %s?
%s — это Спецификатор формата и он используется для форматирования строк.
Он позволяет вставлять значения других типов (числа, объекты и т. д.) в строковые выражения, автоматически преобразуя их к строковому представлению.
%s заменяется на строковое представление переданного значения в процессе форматирования. Это удобный способ интерполяции строк.
Помимо простой интерполяции, %s полезен для оформления вывода данных в консоль, логгирования, составления SQL-запросов с подстановкой значений и других задач работы со строками.
List и Tuple — зачем нужны и какие отличия
List и Tuple — это два основных типа данных для хранения последовательностей.
List (список) — изменяемый тип данных, можно добавлять, удалять и изменять элементы.
Tuple (кортеж) — неизменяемый тип данных, элементы нельзя изменить после создания.
Основные отличия:
- Списки изменяемые, кортежи - нет;
- Списки удобнее для добавления/удаления элементов;
- Кортежи более эффективны по памяти и быстрее для доступа к элементам.
Для хранения постоянных данных лучше использовать кортежи, а для изменяемых данных — списки.
#это_база
Boltons.iterutils
Boltons — это набор из более чем 230 утилит на чистом Python, распространяемых по лицензии BSD, которые дополняют стандартную библиотеку. А iterutils — модуль, который предоставляет множество полезных функций для работы с итераторами.
В примере мы используем следующие функции:
- chunked: разделяет список на чанки заданного размера.
- windowed: возвращает скользящее окно заданного размера из списка.
- pairwise: возвращает пары соседних элементов из списка.
- split: разделяет список на две части по заданному условию.
- split_at: разделяет список на две части по заданному индексу.
#вопросы_с_собеседований
Можно ли создать словарь с упорядоченным набором ключей в Python ниже 3.7?
Начиная с версии Python 3.7, порядок вставки ключей сохраняется, и вы можете создать словарь с упорядоченным набором ключей.
Чтобы создать такой словарь на версиях ниже чем 3.7, вы можете использовать collections.OrderedDict.
collections.OrderedDict сохраняет порядок добавления элементов, а также предоставляет два дополнительных метода:
- .popitem() удаляет элемент с начала или конца OrderedDict;
- .move_to_end() перемещает элемент в начало или конец OrderedDict.
Starlette
Starlette — это легковесный ASGI фреймворк/набор инструментов, который идеально подходит для создания асинхронных веб-сервисов на Python.
Он готов к использованию в продакшене и предлагает следующие возможности:
- легковесный, низкосложный HTTP веб-фреймворк;
- поддержка WebSocket;
- фоновые задачи в процессе;
- события запуска и остановки;
- тестовый клиент, построенный на httpx.
В этом примере создается приложение Starlette с одним маршрутом, который обрабатывается функцией homepage. Эта функция возвращает JSON-ответ с сообщением “Hello, world”.
Чтобы запустить это приложение, необходимо установить ASGI-сервер, например uvicorn, и выполнить следующую команду: uvicorn example:app, где example — это имя файла с кодом приложения, а app — имя переменной с экземпляром приложения Starlette.
Дано целое число, преобразовать его в римскую цифру.
В этом решении мы создаем метод intToRoman, который принимает целое число в качестве аргумента и возвращает его римское представление в виде строки.
Метод использует жадный алгоритм для поиска наибольшего римского числа, которое может быть вычтено из входного числа. Затем он вычитает это число и добавляет соответствующее римское число к результату.
Этот процесс повторяется до тех пор, пока входное число не станет равным нулю.
#разбор_кода
⚡️ Тест на знание пентестинга⚡️
— Ответьте на 20 вопросов и проверьте, на сколько хорошо вы знаете практику тестирования на проникновение, а так же готовность к углубленному обучению на онлайн-курсе «Пентест. Практика тестирования на проникновение» со скидкой в OTUS!
Курс необходим не только специалистам в области информационной безопасности, но и:
— Администраторам и DevOps-инженерам, желающим создать надежную и безопасную инфраструктуру.
— Разработчикам, которые стремятся оптимизировать свои приложения.
👉🏻 ПРОЙТИ ТЕСТ: https://otus.pw/BIQC/
🎁 Бонусом за прохождение теста, вы получите запись открытого урока "Атаки Relay, инструменты и особенности использования".
Получите свой бонус прямо сейчас и приходите учиться.
Нативная интеграция. Информация о продукте www.otus.ru
«Асинхронная архитектура», о проектировании сложных распределенных систем
28 июля стартует 5 набор на курс «Асинхронная Архитектура». Приходите учиться, если уже напарывались на сервисную архитектуру, которая в итоге становилась распределённым монолитом, или просто хотите погрузится в мир больших распределённых систем.
Темы курса:
— обработка распределённых ошибок,
— тестирование распределённых систем,
— форматы данных и способы коммуникации,
— отказоустойчивость,
— эволюция — как добавлять новые события в сложные системы.
Курс направлен на мидлов, сеньоров, тимлидов и CTO. Отважным джунам тоже можно прийти — прокачаете мышление проектировщика, которое позволит писать более понятный и изолированный код.
Курс прикладной: будут домашки с разбором, которые готовят к реальной работе и реальным сложностям. За время курса вы сделаете проект с асинхронной архитектурой и положите себе в портфолио. Если успеете в дедлайн — получите сертификат на русском и английском языке, который можно привязать к линкедину.
Материалы курса проверены на почти 1500 учеников. На курсе учились команды из Arrival, Toptal, Яндекс, Озон, Авито, Сбер и другие.
Посмотреть программу, отзывы и бесплатный урок →
По промокоду seniorpy10 скидка 10% до 25 июля. Платить можно самому сразу или частями. А лучше за счет компании из любой точки мира.
Прыжки по массиву
Дан целочисленный массив nums. Изначально вы располагаетесь на первом индексе массива, и каждый элемент массива представляет собой максимальную длину вашего прыжка на этой позиции.
Возвращается true, если вы можете достичь последнего индекса, или false в противном случае.
Решение: создаем переменную farthest, которая будет хранить самый дальний индекс, до которого можно добраться. Затем проходим по nums и для каждого элемента проверяем, можно ли добраться до него из текущего положения (if i > farthest):
- Если это невозможно, то алгоритм возвращает False, так как мы не можем добраться до последнего элемента.
- Если это возможно, то алгоритм обновляет значение переменной farthest, если текущий элемент позволяет добраться дальше (if nums[i] + i > farthest).
- Если значение переменной farthest больше или равно индексу последнего элемента списка, то алгоритм возвращает True, так как мы можем добраться до последнего элемента.
#разбор_кода
Сортировка списков
В Python есть два способа сортировки списка: встроенный метод списка list.sort() и встроенная функция sorted(). Вот в чем заключается их отличие:
- Функция sorted() принимает итерируемый объект и возвращает новый отсортированный список, не изменяя исходный.
- Метод list.sort() сортирует список на месте, то есть изменяет исходный список.
#это_база
Как стать востребованным разработчиком? Изучите Go! После изучения вы сможете создавать надежные и масштабируемые серверные приложения, отвечающие потребностям крупных компаний.
Начните погружение в Go c пробного урока курса от OTUS, на котором 👨💻 Владимир Балун, ведущий разработчик в Ozon расскажет об актуальности и перспективах этого языка. Курс подходит разработчиком с опытом от 2-3х лет работы на других языках.
Какие темы затронем на встрече:
— что происходит в IT-бизнесе
— в какие проекты может сейчас попасть Golang-разработчик
— чем хорош этот язык программирования
— какие продукты создаются ТОЛЬКО на Go
— почему Go имеет отличные перспективы в индустрии.
👉 Чтобы получить урок, переходите на наш сайт, регистрируйтесь на курс и вам автоматически откроется доступ и вы получите спец цену на основной курс до конца недели — https://otus.pw/9rbb/
Реклама. Информация о рекламодателе на сайте www.otus.ru.
Дан целочисленный массив nums, поверните массив вправо на k шагов.
reverse принимает nums и переворачивает элементы списка между индексами i и j, затем элементов с индексами i+1 и j-1, и так далее, пока индексы не встретятся посередине. Этот процесс продолжается до тех пор, пока левый индекс меньше правого индекса.
rotate принимает nums и число шагов поворота k и поворачивает список на k шагов вправо. Это достигается путем выполнения трех операций переворота: сначала переворачивается левая часть списка (от начала до
len(nums) - k - 1), затем правая часть списка (от len(nums) - k до конца), и, наконец, весь список целиком.
Эти три операции переворота вместе приводят к повороту списка на k шагов вправо.
#разбор_кода
Мужчинам без радости в жизни
Проблема: неправильно выстроенные отношения с девушками, как итог - зависимость, слабая позиция и непроработанные внутренние опоры. Исправить это может каждый, достаточно читать «НеНастоящий» мужчина
Ваня по шагам рассказывает, как выстроить свободные и яркие отношения с девушками. Без манипуляций, без криков и психологов
Это должен знать каждый мужчина — @unreal_man
H2OaiH2O.ai
предоставляет модуль Python, который дает доступ к H2O JVM
, а также к его расширениям, объектам, алгоритмам машинного обучения и возможностям поддержки моделирования, таким как базовое преобразование данных и генерация признаков. H2O JVM
предоставляет веб-сервер, чтобы все общение происходило через сокет (указанный IP-адресом и портом) с помощью серии вызовов REST
.
В этом примере мы импортируем H2OGradientBoostingEstimator
из библиотеки h2o
и инициализируем H2O
с помощью init
. Затем загружаем данные и разделяем их на тренировочные и тестовые. Далее мы определяем признаки и целевую переменную для обучения модели.
Затем мы создаем экземпляр H2OGradientBoostingEstimator
и обучаем его на тренировочных данных с помощью метода train
. После обучения мы можем использовать метод model_performance
для оценки качества модели на тестовых данных.
LIME
LIME (Local Interpretable Model-agnostic Explanations) - это проект, который объясняет, что делают модели машинного обучения. lime
поддерживает объяснения для табличных моделей, текстовых классификаторов и классификаторов изображений.
В этом примере мы загружаем данные о качестве вина и разделяем их на тренировочные и тестовые. Затем мы обучаем модель RandomForestClassifier
на тренировочных данных. Далее мы создаем объект LimeTabularExplainer
из библиотеки lime
, который используется для интерпретации предсказаний модели. Мы выбираем индекс объекта из тестовых данных и используем метод explain_instance
для получения объяснения предсказания модели для этого объекта.