№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Метод str.expandtabs()
Метод str.expandtabs() возвращает копию строки str, в которой все символы табуляции t заменяются одним или несколькими пробелами, в зависимости от текущего столбца и заданного размера табуляции tabsize.
Для замены табуляций изначально номер столбца задаётся равным нулю и начинается посимвольный обход строки.
При обходе строки str, если попадается символ табуляции t, то на его место вставляется столько пробелов, что бы текущий номер столбца стал равным позиции следующей табуляции. При этом сам символ табуляции не копируется.
Если встречается символ переноса строки n или возврата каретки r, то он сохраняется в строке, а текущий номер столбца сбрасывается на 0. Любой другой символ копируется без изменений, а текущий столбец увеличивается на единицу.
Преобразование изменяемых данных в неизменяемые
Изменяемые данные (например, словари или списки) — это структуры, к которым могут быть добавлены новые значения.
Неизменяемые данные, в противоположность изменяемым, после создания остаются неизменными. Этого можно достигнуть с помощью функции frozenset.
Работаем со временем без головной боли
При работе со временем и датами у встроенных модулей есть несколько неприятных моментов:
— Их слишком много: datetime
, time
, calendar
, dateutil
, pytz
и другие;
— В них слишком много типов: date
, time
, datetime
, tzinfo
, timedelta
, relativedelta
и т. д.
Но есть пакет arrow, который решает многие проблемы. Во-первых, там есть все необходимое. Во-вторых, все объекты имеют один и тот же тип Arrow
.
Большой плюс в том, что пакет совместим с основными встроенными типами. Например, в коде на картинке преобразовано datetime
в Arrow
и обратно.
Еще из приятных бонусов: там есть функция humanize
, которая конвертирует время в читаемый текст.
Assert
Если выполнить инструкцию assert
с логическим выражением, результат которого равен True
, ничего не произойдет. Но если попробовать выполнить инструкцию assert
с логическим выражением, которое равно False
, то будет сгенерировано исключение AssertionError
.
Исключения AssertionError
предназначены скорее для программистов. При написании программ на этапе разработки мы должны видеть, что делаем что-то не так (к примеру, передали в функцию некорректное значение).
Не нужно, например, обрабатывать пользовательский ввод и пытаться обработать исключение AssertionError блоком try except. Если таких мест будет очень много, то это затронет и производительность программы.
Композиция классов
Один из способов организации взаимодействия между классами – это композиция, или же ассоциация, классов.
В этом случае один из классов (в примере выше это Salary
) является полем другого (Employee
). Сложного здесь, как вы видите, ничего нет.
Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора. В таком случае необходимо использовать слабые ссылки из модуля weakref
.
Оператор объединения словарей
В Python есть много разных способов объединить несколько словарей. На картинке работает оператор |
, с помощью которого можно это делать проще всего.
1,5 млн человек пользуются умным домом с Алисой каждую неделю! Над экосистемой умных устройств Яндекса трудится большая команда, которая придумывает новые способы сделать бытовую жизнь еще комфортнее.
Сейчас ребята в поиске разработчика на Go — нужно разрабатывать сценарии автоматизации умного дома и расширять API для поддержки новых устройств.
Если умеете писать высокопроизводительный код и хотите сделать жизнь миллионов людей комфортнее — переходите на сайт, там больше о вакансии.
⚡️ Python теперь в Telegram!
Ребята сделали крутейший канал, где на простых картинках и понятном языке обучают Python, делятся полезными фишками и инструментами
Подписывайтесь: @PythonPortal
Хотите разбираться в Big Data так, как это делают специалисты Яндекса? Тогда присоединяйтесь к бесплатному интенсиву ШАДа Big DWH Week!
Вас ждёт 8 онлайн-занятий, на которых вы познакомитесь с YTsaurus — платформой для распределённого хранения и обработки данных. Вы разберётесь в её архитектуре и масштабировании, а также научитесь настраивать систему под свои задачи.
Интенсив открытый, поэтому зарегистрироваться может каждый. Однако интереснее всего программа будет тем, кто уже работает с данными: опытным бэкенд-разработчикам и разработчикам баз данных, инженерам и аналитикам данных, а также студентам технических направлений.
Регистрируйтесь до 25 апреля и прокачивайтесь в Big Data вместе с экспертами Яндекса и ШАДа! Все подробности — по ссылке.
#вопросы_с_собеседований
Что означает self в классе?
Self ссылается на экземпляр класса. Так метод может обновлять объект, к которому принадлежит.
На картинке передача self в init() дает возможность установить цвет экземпляра при инициализации.
#вопросы_с_собеседований
Что такое pickling и unpickling?
Модуль pickle принимает любой объект Python, преобразует его в строковое представление и сохраняет в файл с помощью функции dump, такой процесс называется pickling.
Процесс извлечения исходных объектов Python из сохраненного строкового представления называется unpickling.
Получаем текст с картинки
У Google есть система Tesseract, которая позволяет парсить текст с картинок с помощью оптического распознавания символов. В качестве обертки над их системой был создан пакет pytesseract
, который удобно и легко использовать.
Чтобы получить текст с картинки, надо вызвать метод image_to_string
. Если вас интересует текст на русском, то следует указать аргумент lang
как 'rus'
.
Для открытия картинок рекомендуется использовать pillow
, хоть и имеется возможность просто указать путь к файлу в виде строки.
Генерируем фейковый профиль человека
С помощью метода profile пакета Faker мы с легкостью можем получить информацию о несуществующем человеке.
Всем привет! На канале Data analysis | Анализ данных | DA разбираются темы и вопросы, которые должен знать аналитик данных, имеющий опыт 3-6 лет. Все темы взяты из реальных вакансий, опубликованных на hh.ru.
Будет полезно, если вы являетесь аналитиком данных (начинающим или опытным) или работаете по смежной профессии, либо просто интересуетесь базами данных, Python, SQL, экономикой и финансами и всеми производными от этих тем.
🟠Список разобранных вопросов:
✅Python:
▶️Эмбеддинги предложений
▶️Алгоритм кластеризации
▶️Кластеризация текстовой информации
▶️Визуализация: Matplotlib
▶️Визуализация: Seaborn
▶️Python в Tableau
▶️Python + SQL: Cx_oracle
✅SQL:
▶️PARTITION (оконные функции)
▶️PARTITION (партиционирование)
▶️Процедуры: разбор IN | OUT | IN OUT
▶️Процедуры: объявления и исключения
▶️PACKAGE (пакеты)
▶️Циклы LOOP, WHILE, FOR
▶️CURSOR
▶️Индексы
▶️Представления (Views)
▶️Pivot в SQL
▶️Hints (хинты)
▶️EXPLAIN PLAN
✅Базы данных:
▶️Какие бывают базы данных
▶️Виды БД наглядно
▶️ACID и BASE
▶️Типы данных
▶️OLAP-кубы
▶️Проектирование баз данных
▶️Разница между БД и DWH
▶️Витрины данных
▶️ETL и ELT процессы
▶️Звездочка, снежинка, Data Vault
▶️Слои данных в DWH
✅Экосистема Apache
▶️Обзор Hadoop
▶️Обзор Hive
▶️Обзор Impala
✅ClickHouse
▶️Обзор ClickHouse
▶️Массивы, groupArray, groupUniqArray, uniq
▶️arraySort, arrayReverseSort и arrayFilter
✅BI-инструменты
▶️Tableau
✅А/Б тестирование:
▶️Основы А/Б тестов
▶️А/Б тесты на практике
▶️Математические методы проверки результатов
▶️Инструменты А/Б тестирования
✅Работа с данными:
▶️Парадокс Симпсона
▶️Банковские клиенты
▶️Клиентская информация в банковском DWH
▶️Банковские продукты
▶️Продуктовая информация в банковском DWH
▶️Счета, баланс и фин рез в банковском DWH
🟠В ближайшем будущем будем разбирать:
▶️Больше про SQL и базы данных: архитектуру и т.п.
▶️Больше питоновских библиотек
▶️Про банковские данные
▶️Hadoop, Airflow, Hive, Clickhouse, pyspark, Greenplum
▶️BI инструменты
▶️Apache Zeppelin, Apache Superset, Redash
Декоратор @classmethod
Декоратор @classmethod
используется для создания методов класса. Метод класса — это метод, который привязан к классу, а не к его экземпляру. Это означает, что вы можете вызвать метод класса на самом классе, а не на его экземпляре.
Один из распространенных способов использования методов класса — это создание фабричных методов, которые возвращают новые экземпляры класса.
В этом примере мы определяем класс MyClass с методом __init__, который принимает один аргумент value. Затем определяем метод класса from_string, который принимает строку и преобразует ее в целое число с помощью функции int. Метод возвращает новый экземпляр класса MyClass, созданный с помощью переданного значения.
Метод класса определяется с помощью декоратора @classmethod
и принимает первым аргументом ссылку на сам класс (обычно называемую cls). Внутри метода мы используем эту ссылку для создания и возврата нового экземпляра класса.
#это_база
Функция sample
Функция sample() модуля random возвращает список длины k случайных элементов, выбранных из последовательности или множества. Исходная последовательность остается неизменной.
Если исходное множество содержит повторы, то каждый случай является возможным выбором в результирующем списке.
defaultdict: безошибочный словарь
Обычный словарь dict в Python содержит пары вида «ключ:значение». Значение из словаря можно запросить по ключу. В случае если запрашиваемого ключа в словаре нет, Python выдаст ошибку.
Поведение логичное, но не слишком удобное для работы. Словарь defaultdict из библиотеки collections поступает иначе: если запросить у такого продвинутого словаря ключ, которого в нём нет, он не обидится и не выкинет ошибку, а вместо этого:
— создаст этот ключ;
—создаст к нему значение, которое будет иметь тип, оговорённый по умолчанию («по дефолту» — отсюда, кстати, и название), — например, целое число или строку;
—вернёт вам это значение.
Хотите освоить программирование или сменить работу в IT?
А вы готовы всего за час создать и опубликовать целое приложение?
Отлично! Тогда присоединяйтесь к онлайн-конференции «Как создать первый проект на Python и Java с нуля»!
Новички в IT узнают:
- какой язык программирования лучше выбрать для старта
- как быстро создать и развернуть приложение
- как работают Python и Java на практике
- как размещать код на GitHub и работать с репозиториями
- какие дополнительные инструменты использовать для профессионального роста
Программисты на других языках, и те, кто ищет новые возможности в IT:
- поймёте, какие IT-технологии сейчас востребованы
- узнаете, какие навыки прокачивать для успешной смены деятельности
- отработаете навыки быстрой сборки и быстрого развёртывания проекта
- узнаете о новых возможностях для обучения и развития
Также вас ждёт квиз с призами!
Спикеры:
Сурен Хоренян: бэкенд-разработчик на Python, руководитель команды в «VK Рекламе»
Сергей Прощаев: Java-разработчик
Бонус! Скидка 7% на любой курс OTUS и полезные материалы в подарок!
18 апреля, 19:00 МСК
Бесплатно
Записаться на событие - https://otus.pw/e4SD/?erid=2W5zFK8s5JQ
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Что не так с кодом в Капибаровске?
Узнайте на T-CTF — соревновании от Т-Банка для опытных ИТ-специалистов. Решайте задания по спортивному хакингу с шансом выиграть приз до 420 000 ₽.
Вот как все устроено:
— Выберите Лигу Разработки или Лигу Безопасности по своим навыкам. Если участвуете впервые, можно потренироваться на демозаданиях.
— Соревнуйтесь один или в команде до 3 человек. Вам помогут найти команду, если нет своей.
— Участвуйте онлайн или приходите в ИТ-хаб Т-Банка в одном из 6 городов России.
— Используйте время на решение заданий и общение с участниками — у вас будет 36 часов.
Задания будут интересны разработчикам, QA- и SRE-инженерам, аналитикам и другим ИТ-специалистам уровня middle и senior.
Успейте зарегистрироваться до 18 апреля.
Реклама. АО «ТБанк», лицензия ЦБ РФ № 2673, erid:2RanymDWdjf
Находим соответствия в строках
В стандартной библиотеке Python существует модуль difflib
, в котором есть интересный метод get_close_matches
. Он позволяет найти в списке строки, похожие на некую исходную.
Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент – список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент n
, который задаёт максимальное число возвращаемых совпадений.
Ключевое слово nonlocal
Похожее по функционалу на global, ключевое слово nonlocal
позволяет обращаться к переменным из нелокальной области видимости.
Поведение nonlocal
заключается в том, что интерпретатор ищет переменную в ближайшей области видимости.
Основное различие с global
в том, что с помощью nonlocal
нельзя получить переменные из глобальной области видимости.
Ключевое слово global
Изначально мы не можем изменять значение переменной в другой области видимости, но мы можем это сделать, поменяв область видимости переменной на глобальную с помощью ключевого слова global
.
Мы даже можем определить новую глобальную переменную внутри функции, но не нужно этим злоупотреблять, т.к. это будет засорять глобальную область видимости и приводить к нежелательным ошибкам.
Копируем файл в другой каталог
Метод Shutil.copy() в Python используется для копирования содержимого исходного файла в целевой файл или каталог. Он также сохраняет режим разрешений файла, но другие метаданные файла, такие как время создания и изменения файла, не сохраняются.
Подробнее с модулем Shutil можно ознакомиться здесь.
Примеры форматирования строк
Метод s.format() представляет собой основной метод API. Он принимает строку формата format_string и произвольный набор позиционных *args и ключевых **kwargs аргументов. Это просто оболочка, которая вызывает s.vformat().
Подробнее про форматирование строк можно почитать здесь.
Микросхемы, роботы и сборка ПК «Ленинград»: 25-26 апреля в Москве пройдет Repair Cafe
Яндекс — компания, которую создали люди с инженерным мышлением. Когда-то команда выпускала только софт, а сейчас в компании полный in-house цикл производства железа: от роботов-доставщиков до умных устройств и многого другого. Для тех, кто разделяет этот подход, Яндекс проводит Repair Cafe.
Главная точка ивента — большая мастерская, где опытные наставники компании помогут гостям разобраться с любой техникой. Берите сломанные наушники, консоли или другую электронику: все необходимое (включая целое меню паяльников) для ремонта уже будет на месте.
Отдельная часть программы — лекции и воркшопы, где вы узнаете про особенности термодизайна серверов и научитесь чинить электросамокат.
Участие бесплатное, регистрируемся тут до 16 апреля.
Короче, ищем менторов — Middle и Senior Python-разработчиков
Ищем в ШОРТКАТ — менторскую платформу от команды разработчиков из бигтеха. Мы помогаем найти крутую работу, апнуть грейд или сменить стек.
Что надо будет делать: проводить тестовые собесы → оценивать грейд → помогать разбираться в сложных темах.
Что взамен:
- От 40К за 5-7 часов работы в неделю
- Доступ к обучению и комьюнити сильных менторов из Booking, Сбер, Oracle, Tinkoff
- Возможность выступать на эфирах, куда уже приходят 500+ джавистов, и стать заметнее на рынке
Заполняй форму — свяжемся и расскажем подробности ➡️ https://forms.gle/rFY9z9GKggqfgSS76
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzquZrRFP
#вопросы_с_собеседований
Напишите функцию, которая будет принимать два списка чисел (вложенный и обычный) и проверять, все ли числа в подсписках вложенного принадлежат множеству чисел второго, обычного списка
Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными.
Прогресс выполнения программы
Индикаторы прогресса добавляют наглядности в скриптах, которые исполняют какие-то функции, требующие времени для выполнения. Модуль tqdm
является простым и лаконичным вариантом.
Привычный range
можно заменить на trange
для визуализации прогресса. А для итерации по какой-либо последовательности достаточно просто передать её в функцию tqdm
. Также модуль хорошо себя зарекомендовал и в Jupyter Notebook.
Сортировка списков
В Python есть два способа сортировки списка: встроенный метод списка list.sort() и встроенная функция sorted(). Вот в чем заключается их отличие:
- Функция sorted() принимает итерируемый объект и возвращает новый отсортированный список, не изменяя исходный.
- Метод list.sort() сортирует список на месте, то есть изменяет исходный список.
#это_база
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.