seniorpy | Unsorted

Telegram-канал seniorpy - Senior Python Developer

54326

№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy

Subscribe to a channel

Senior Python Developer

🚨Тревожно заниматься сексом, когда тебя слушает Google через твой смартфон

Или набирать интимное сообщение, когда каждое твое слово улетает на сервер клавиатурного шпиона.

Приватности больше нет. Крупные корпорации залазят к нам в трусы ради лишнего миллиона долларов. И только 7% пользователей знают, как этому противостоять.

Для тех, кому не наплевать на свою безопасность есть канал «ИТ. Право. Безопасность».

Как узнать, что твой телефон пытались взломать?
Какие 3 настройки отключить, чтобы не давать согласие на прослушку?
Куда смотреть, чтобы определить точное гео собеседника по его сообщению?

Не подписывайся на канал, если хочешь и дальше верить в безопасность соцсетей:
@it_law_security

Читать полностью…

Senior Python Developer

encode() и decode()

Функции encode() и decode() используются для преобразования строки в байтовое представление и обратно.

encode() преобразует строку в байты для хранения или передачи. А decode() конвертирует байты обратно в строку.
Параметр кодировки (в данном случае - utf-8) должен совпадать при encode и decode.

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
Как сравниваются последовательности?

При сравнении происходит поэлементное (по порядку) сравнение элементов последовательностей.

Сначала сравниваются первые элементы, если они равны - вторые и т.д.

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

Если дошли до конца одной последовательности, то большей считается более длинная.

Таким образом, сравнение идет поэлементно слева направо до тех пор, пока элементы равны или пока не закончится одна из последовательностей. Это называется лексикографическим порядком сравнения.

Читать полностью…

Senior Python Developer

🎁 Приглашаем на базовый урок по Machine Learning для начинающих

"Профессия Data Science - это проще, чем кажется" от OTUS.

Дата: 2 августа в 20:00. Вебинар приурочен к старту онлайн-курса "Machine Learning".

На занятии расскажем:

-Про профессию Data Science,
-Чем методы машинного обучения отличаются от методов классического программирования.
-Почему специалисты в этой области так востребованы

Также на занятии решим одну из задач машинного обучения на практике.

👩‍💻Преподаватель: Мария Тихонова, Senior Data Scientist SberDevices

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

Хочешь сделать карьеру в направлении Machine Learning?

👉Регистрируйся на пробный открытый урок: https://otus.pw/IgQF/

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior Python Developer

Один бот вместо тысячи каналов

Зачем подписываться на десятки каналов, если есть новостной бот AI Open News?

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

И бот не заспамит вас уведомлениями — он высылает подборки только в установленное время. Чтобы читать перед сном или по пути на работу.

А еще он умеет составлять дайджесты из актуальных постов на любую тематику.

AI Open News удобнее каналов. Попробуйте 👉 @AiOpenNewsbot

Читать полностью…

Senior Python Developer

Метод setdefault()

Метод setdefault() для словарей - очень полезная вещь, он позволяет задать значение по ключу в словаре, если этого ключа еще нет, а также вернуть значение по этому ключу.

#это_база

Читать полностью…

Senior Python Developer

optional_return

Функция optional_return в модуле typing используется для определения функций, которые могут возвращать значение или None.
Это позволяет лучше документировать поведение функции и дает подсказки при использовании ее результата, не опасаясь ошибки, если будет возвращен None.

В данном примере функция find_user может вернуть имя пользователя, если оно найдено в списке, или None, если такого имени нет. Благодаря аннотации Optional[str] мы явно указываем, что возвращаемое значение может быть строкой или None.

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
что такое DjangoRESTFramework и для чего используется?

Django REST Framework (DRF) - это популярный toolkit для создания REST API на Python с использованием фреймворка Django.

DRF широко используется для создания REST API среднего и крупного масштаба, которые нуждаются в гибкости, производительности и удобном интерфейсе для клиентов.

Среди основных преимуществ DRF:

- Поддерживает форматы з
запросов и ответов: JSON, YAML, Browsable API.
- Интегрируется с основными БД и позволяет быстро создавать сложные запросы.
- Автоматически генерирует интерактивную документацию для API в формате Swagger/OpenAPI.

Читать полностью…

Senior Python Developer

Геттеры и сеттеры

Геттеры
и сеттеры - это специальные методы класса, которые используются для управляемого доступа к атрибутам объекта. Они позволяют инкапсулировать реализацию класса и предоставить проверенный интерфейс для манипуляции данными.

- Геттер позволяет получить значение атрибута.
- Сеттер используется для установки значения атрибута.

Преимущества геттеров и сеттеров:

- Контроль доступа к атрибутам класса.
- Валидация данных.
- Возможность добавить дополнительную логику при установке/получении значений.

#это_база

Читать полностью…

Senior Python Developer

Заменяем часть строки через str.replace()

Функция str.replace() позволяет заменить все вхождения подстроки в строке на другую подстроку, не указывая явно позиции для замены.

В примере мы создали строку text с двумя вхождениями подстроки "Hello".
Далее с помощью метода replace() заменяем "Hello" на "Hi".

Первым аргументом передается строка для замены, вторым - строка, на которую нужно заменить.

#это_база

Читать полностью…

Senior Python Developer

❗️Овладейте лучшими практиками и навыками Python для уверенного карьерного роста

⬆️ В OTUS стартует онлайн-курс «Python Developer. Professional». Он предназначен для тех, кто уже знаком с основами Python и хочет расширить свой арсенал новыми навыками.

💪 Погрузим вас в современную «промышленную» разработку на Python. Главный фокус курса на основных Software Engineering компетенциях Python-разработчика и формировании прагматичного подхода к решению задач.

На курсе рассматриваются все особенности актуальных версий Python 3.6+.

✅ Протестируйте обучение на открытом уроке 15 августа — «Code review»
Обсудим основы разработки API с помощью фреймворка FastAPI, рассмотрим пример небольшого приложения и осветим особенности развертывания эксплуатации.

👉 РЕГИСТРАЦИЯ
https://otus.pw/pp6s/

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior Python Developer

Журнал «Код» — это база для начинающих программистов. Отвечаем на самые простые вопросы и делимся мудростью. 

Подписаться: @thecodemedia

Реклама. ООО "ЯНДЕКС". ИНН 7736207543. erid: 2RanymC4vVE

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
Какой метод использовался до оператора in для проверки наличия ключа в словаре?

До появления оператора in в Python, чтобы проверить, содержит ли словарь определенный ключ, использовался метод словаря has_key().

Этот метод принимал в качестве аргумента проверяемый ключ и возвращал логическое значение - True, если ключ присутствовал в словаре, и False - если нет.

В Python 2.5 появился более понятный и краткий оператор in, поэтому сейчас рекомендуется использовать именно его, а has_key() считается устаревшим.

Читать полностью…

Senior Python Developer

Глубокое копирование (deep copy)

Глубокое копирование нужно для создания полной копии объекта, включая все вложенные объекты. Это важно для изменяемых объектов, таких как списки, чтобы изменения в копии не затрагивали оригинал.

Когда мы вызываем глубокое копирование, происходит следующее:
- Создается новый контейнерный объект (список, словарь и т. д.);
- Для каждого элемента исходного объекта рекурсивно вызывается глубокое копирование:
- Если элемент является изменяемым объектом (списком, словарем), то создается его копия с рекурсивным копированием вложенных элементов;
- Если элемент неизменяемый (число, строка) - он просто копируется как есть;
- Копии вложенных объектов вставляются в копию исходного объекта.

#это_база

Читать полностью…

Senior Python Developer

Mypy

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

Для использования Mypy нужно аннотировать переменные специальным синтаксисом, в примере мы указали, что функция sum_list принимает список целых чисел и возвращает целое число.

После запуска, если типы не совпадают, Mypy выдаст ошибку, как показано в примере.

Читать полностью…

Senior Python Developer

Рекурсия в Python

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

Рекурсивная функция должна иметь условие выхода из рекурсии (базовый случай), иначе возникнет бесконечная рекурсия.

Нужно избегать слишком глубокой рекурсии, иначе программа завершится с ошибкой StackOverflow.

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

На изображении представлена рекурсивная функция для вычисления факториала числа.

#это_база

Читать полностью…

Senior Python Developer

⚡️Скорость разработки ПО падает по мере роста размера проекта. Инструменты разработки не могут изменить тенденции, а лишь замедлить и отсрочить неизбежное. SOLID является одной из практик, которая гарантирует неизменность скорости разработки.

Узнайте больше про SOLID-принципы на бесплатном вебинаре онлайн-курса «Архитектура и шаблоны проектирования» в Отус — «SOLID как условие постоянной скорости разработки»: регистрация

На
бесплатном занятии мы:
— разберем, почему SOLID принципы являются достаточным условием сохранения скорости разработки;
— рассмотрим простой и понятный механизм их применения для получения повторно используемого кода.

🔥Экспертизой поделится Евгений Тюменцев — опытный директор компании по разработке программного обеспечения.

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

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior Python Developer

Метод join

Метод join() позволяет объединить элементы последовательности (списка, кортежа и т.д.) в строку.

Основные моменты:

- Метод принадлежит строке, вызывается на разделителе.
- В качестве разделителя можно использовать любую строку.
- В результате получится строка, где между элементами последовательности вставлен разделитель.

#это_база

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
Что такое магические методы?

Магические методы - это специальные методы класса, которые начинаются и заканчиваются двумя символами подчеркивания.

Они вызываются автоматически интерпретатором Python при определенных действиях и используются для эмуляции встроенных в язык структур и функций.

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

Читать полностью…

Senior Python Developer

multitasking

Библиотека multitasking  предназначена для организации параллельных вычислений с использованием кооперативных потоков.
Она позволяет легко создавать параллельные задачи и управлять ими.

Multitasking полезен, когда в приложении нужно:

- Выполнять несколько задач параллельно
- Организовать очереди задач и пулы потоков
- Избежать блокировки интерфейса при длительных операциях

Как видно из примера, задачи выполнились параллельно, в произвольном порядке.

Читать полностью…

Senior Python Developer

🐍 Подготовительный курс по Python-разработке. 990 рублей. Старт 9 августа!

✔️Упражняемся в браузерном тренажере — учимся понимать и писать код на Python.
✔️Погружаемся в реальный продакшен — создаем конвертер валют вместе с наставником.
✔️Размещаем изменения на GitHub — получаем основу для своего первого пет-проекта всего за 14 дней.

Вы с нами?

Читать полностью…

Senior Python Developer

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

Хотите работать в крупных командах над сложными и интересными проектами? Тогда самое время погрузиться в микросервисную архитектуру 🗓 31 июля в 20:00 на открытом уроке «Топ ошибок при переходе с монолита на микросервисную архитектуру» от OTUS.

На занятии вместе со 👨‍💻 Станиславом Щетинниковым, директором по развитию в Сбербанке, разберем главные ошибки при переходе, плюсы и минусы микросервисной архитектуры.

👉 Регистрируйтесь на занятие — https://otus.pw/A7q0/

Открытый урок приурочен к старту онлайн-курса «Microservice Architecture» в OTUS. После урока полный курс вы сможете приобрести удобным для вас способом.

Нативная интеграция. Информация о продукте www.otus.ru

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
Что такое shallow copy и как используется?

Shallow copy - это создание нового объекта путем копирования ссылки на вложенный объект, вместо создания полной копии вложенного объекта.

Если мы копируем список, который содержит другие списки, при shallow copy будут скопированы только внешние списки.

Если изменить внутренний список в копии, то это отразится и на оригинале.

Основное отличие от deep copy в том, что при полном копировании создаются копии всех вложенных объектов до самого нижнего уровня.

Читать полностью…

Senior Python Developer

Python-dateutil

Библиотека python-dateutil предоставляет расширенные возможности для работы с датами и временем.

Она может использоваться для:
- Парсинга и форматирования дат;
- Выполнения арифметических операций с датами;
- Работы с часовыми поясами;
- Вычисления разницы между датами.

В примере мы используем библиотеку для получения начала и конца недели по заданной дате.

relativedelta используется для смещения даты на нужные дни недели.
MO(-1) - для получения предыдущего понедельника.
SU - для получения следующего воскресенья.

Читать полностью…

Senior Python Developer

#вопросы_с_собеседований
Как изменить тип данных списка?

Для изменения типа данных в списке можно использовать встроенные функции:

1. map() - применяет указанную функцию к каждому элементу списка и возвращает новый список с измененными элементами:

old_list = [1, 2, 3]
new_list = map(str, old_list)


В новом списке все элементы будут строкового типа.

2. Использование генераторного выражения:

old_list = [1, 2, 3]
new_list = [str(x) for x in old_list]


Здесь мы преобразуем элементы в строку и помещаем в новый список.

Также можно применить конструкцию map к генераторному выражению:

new_list = list(map(str, [1, 2, 3]))

Читать полностью…

Senior Python Developer

zlib

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

В примере мы используем функцию crc32(), которая вычисляет контрольную сумму CRC32 для переданных байтовых данных и возвращает целочисленное значение CRC32.
Это может быть полезно для проверки целостности данных, например при передаче файлов.

CRC32 часто используется в архивациях, сетевых протоколах и хранилищах данных для обнаружения ошибок.

Читать полностью…

Senior Python Developer

Statistics

Библиотека statistics предназначена для вычисления различных статистических характеристик наборов данных.

Одной из полезных функций этой библиотеки является mean(), которая вычисляет среднее арифметическое значение последовательности чисел.

В примере мы вычисляем среднее значение элементов списка data.
Функция mean() принимает последовательность чисел, суммирует их и делит на количество элементов.

Читать полностью…

Senior Python Developer

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

Чтобы погрузиться в эту тему и получить лучшие практики для работы с высокими нагрузками приходите 🗓 2 августа в 20:00 на открытый урок «Индексы в PostgreSQL» онлайн курса «Highload Architect» от OTUS. 👨‍💻 Занятие проведет преподаватель Андрей Поляков, старший разработчик в Unlimint.

На открытом уроке обсудим:
- устройство структуры данных B-tree, в которой хранятся индексы
- устройство индексов в PostgreSQL: B-дерево, хеш, GiST, SP-GiST, GIN и BRIN
- принципы построения планов запросов в PostgreSQL.

И научимся:
- пользоваться командой explain в PostgreSQL;
- строить индексы, позволяющие оптимизировать запросы;
- составлять запросы, позволяющие переиспользовать существующие индексы.

👉 Регистрируйтесь на занятие — https://otus.pw/DbEy/

Открытый урок приурочен к старту онлайн-курса «Highload Architect» в OTUS. После урока полный курс вы сможете приобрести удобным для вас способом.

Нативная интеграция. Информация о продукте
www.otus.ru

Читать полностью…

Senior Python Developer

Руководитель группы бэкенд-разработки IT-инфраструктуры
#Москва #гибрид #TeamLead #python

Мы создаём и поддерживаем продукты, которые позволяют сотрудникам Яндекса общаться с IT- и HR-отделами и помогают сконцентрироваться на непосредственных рабочих задачах, не отвлекаясь на бытовые. Отвечаем за внутренний и внешний портал Service Desk, вендинговые аппараты для получения компьютерных аксессуаров, внутренние чат-боты, электронные очереди для сервисных подразделений и многое другое.
Мы ищем руководителя команды, который поможет нам управлять группой и процессами бэкенд-разработки IТ-инфраструктуры, запускать новые продукты для тысяч сотрудников Яндекса и совершенствовать существующие.
Если вы любите автоматизировать работу и решать сложные задачи, готовы отвечать за команду, изучать и внедрять самые последние технологии, вам у нас точно понравится.

Подробнее о вакансии и отклики: https://goo.su/o950xJ6

Связаться с рекрутером: @alfed28

Читать полностью…

Senior Python Developer

Дан целочисленный массив nums, вернуть [nums[i], nums[j], nums[k]] такие, что nums[i] + nums[j] + nums[k] == 0.

В нашем решении сначала список nums сортируется. Затем перебираются все возможные комбинации индексов i, j и k. Их сумма проверяется на равенство target и добавляется в результирующий сет, если равна.

#разбор_кода

Читать полностью…
Subscribe to a channel