Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Рынок бежит в сторону Go, а вы?
На Go пишут в Ozon, Авито, 2ГИС, Wildberries и другие компании, где есть приложения с микросервисной архитектурой. На HeadHunter больше 1500 открытых вакансий Go-девелоперов.
🔥Расширить стек и и перейти в разработку на Go поможет курс «Golang-разработчик» от Слёрма.
За 4 месяца обучения научитесь:
👉 Уверенно писать на Golang и разрабатывать серверные и клиентские приложения
👉 Понимать устройство observability больших систем
👉 Распиливать монолит на микросервисы без неожиданностей
👉 Синхронизировать goroutine и проводить оптимизацию под работу в нагруженных приложениях
Безопасная работа в контейнерных средах
19 ноября в 11:00 приглашаем на бесплатный вебинар «Защита контейнерных сред с помощью Policy Engine и Service Mesh» от СберТеха.
Вы узнаете:
✅ Как защитить контейнерные среды в рантайме: безопасность на уровне реестра, оркестратора и контейнеров.
✅ Что такое Policy Engine и его роль в управлении политиками безопасности и конфигурациями. Знакомство с Kubelatte и возможностями по мутации, валидации и генерации объектов Kubernetes.
✅ Как Service Mesh обеспечивает безопасность трафика, включая шифрование, контроль конфигураций приложений и кластеров, мониторинг состояния кластеров.
✅ В чем преимущества решений Platform V Synapse по сравнению с open source.
Регистрируйтесь и приходите!
Зарегистрироваться
#реклама 16+
platformv.sbertech.ru
О рекламодателе
3 трюка с itertools
Сегодня мы рассмотрим несколько функций из довольно полезного модуля, позволяющих эффективно работать с итерируемыми объектами. Начнём с очень простой функции – chain. Она позволяет "склеивать" несколько итерируемых элементов в один.
Далее, accumulate. Эта функция немного похожа на reduce, но вместо того, чтобы давать одно окончательное значение, она последовательно применяет функцию, заданную вторым аргументом (в данном случае min), к каждому последующему элементу по порядку: min(11), min(11, 3), min(11, 3, 9) и так далее.
А для того, чтобы создавать комбинации из элементов выбранного итерируемого объекта, вам понадобится функция combinations. Вторым аргументом можно задать длину этой самой комбинации.
Подписывайтесь на канал 👉@pythonofff
Конвертируем изображения в PDF
Иногда у нас появляются заметки или документы в виде фотографий, а в таком формате с ними тяжело работать. Но мы можем собрать все нужные изображения и превратить их в PDF-файл. Это делается при помощи библиотеки img2pdf.
Подписывайтесь на канал 👉@pythonofff
Помощь в трудоустройстве в IT-сфере!
В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно!
Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита.
Для этого нужно:
- Перейти по ссылке
- Заполнить анкету и ответить на вопросы (занимает менее 3 минут)
- На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать
Перейти на сайт
#реклама 16+
urban-university.ru
О рекламодателе
Красивый вывод таблиц
Недавно нам понадобилось логировать часть базы данных. И тут мы вспомнили про прекрасный модуль prettytable, который позволяет красиво выводить таблицы.
Итак, имена столбцов задается с помощью атрибута table.field_names. А добавлять строки с данными в таблицу можно методом table.add_row([]), передавая туда список элементов.
Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод table.get_string().
Подписывайтесь на канал 👉@pythonofff
Работа с ip адресами
Если вам приходится писать на Python программы для работы с сетью — это значит, что вам может очень пригодиться модуль ipaddress.
Одним из вариантов его использования является генерация списка IP-адресов из диапазона адресов, заданных в формате CIDR (Classless Inter-Domain Routing, или бесклассовая адресация).
Подписывайтесь на канал 👉@pythonofff
20-дневный марафон для тех, кто хочет попасть в IT
В цикле открытых эфиров с senior-разработчиками вы:
✅ Узнаете все о правилах IT-рынка в 2024 году
✅ Выберете IT-направление
Из множества айтишных профессий выберете ту самую. И поймете, куда двигаться дальше.
✅ Поймете, как с нуля освоить профессию
Получите подробную дорожную карту в профессии. Научитесь отличать псевдопользу от реально нужных технологий.
✅ Получите советы от senior-разработчиков
Сможете перенять опыт специалистов с опытом от 10 лет. Они предостерегут от ошибок и подскажут, как проще пройти путь с нуля до первой работы.
Марафон пройдет с 9 по 29 ноября. Присоединяйтесь!
Участие бесплатно.
Зарегистрироваться
#реклама 16+
result.school
О рекламодателе
Бесплатный мастер-класс по программированию на Java
В занятии могут участвовать все дети возраста 13-17 лет независимо от уровня знаний в программировании.
✅Педагоги из Университета Иннополис в простой форме обучат основам языка программирования Java и создания графических интерфейсов.
Всего за одно занятие Ваш ребёнок научится самостоятельно создавать мобильные приложения и сможет реализовывать собственные замыслы с дальнейшем!
⚡Не упустите возможность подарить ребёнку уникальные знания от ведущего ИТ ВУЗа страны. Кто знает, возможно, это станет фундаментом для востребованной профессии в будущем или просто полезным хобби в настоящем...
Попробуем?
Регистрируйтесь для участия, количество мест ограничено.
Зарегистрироваться
#реклама 16+
progmatica.innopolis.university
О рекламодателе
Полезность модуля math
Сложно переоценить пользу модуля math, если имеешь дело с какими-либо математическими функциями. Модуль представляет собой обширный функционал для работы с числами.
Его стоит импортировать тогда, когда вам необходимо работать с математикой, но не требуется избыточность модуля numpy. Например, можно импортировать число pi, как в примере.
Модуль math обеспечивает доступ к некоторым популярным математическим функциям и константам, к тому же он является встроенным (не нужно делать установку через pip).
Подписывайтесь на канал 👉@pythonofff
Вычисление выражений Python
Вы наверняка знакомы с eval, но знаете ли вы о literal_eval? Вряд ли. Для безопасного исполнения выражений, содержащих исключительно литералы, вы можете делать так, как показано на картинке выше.
Между прочим, данная фича находится в языке уже очень давно.
Подписывайтесь на канал 👉@pythonofff
Прочитать произвольную строку из файла
Предположим, вы решили разработать чат-бота. В нем конечно же будет с десяток самых крутых и полезных функций, может быть даже в нем будет модные нынче нейросети.
И конечно же не обошлось без приветствия, вы специально заготовили несколько различных вариантов в файле text.txt:
Приветствую!
Здравствуйте!
Ку, здарова.
Добрый день!
Привет!
Чтобы вывести это на экран, может помочь функция getline из модуля linecache. В чем главное отличие этой функции от обычного метода чтения из файла? Функция getline кеширует все строчки файла в списке, так что следующие вызовы get_answer отработают моментально.
Подписывайтесь на канал 👉@pythonofff
Ускоряем код с помощью векторизации
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.
По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.
Подписывайтесь на канал 👉@pythonofff
Создание дочернего процесса
Метод os.fork() создаёт дочерний процесс в том же месте кода, вызывая системную функцию fork(), и возвращает PID (Process Identifier), который равен PID дочернего процесса в родительском процессе и нулю в новом.
Кстати, получается интересный случай, в коде примера выполняется и блок if, и else. Если не знать про os.fork() и посмотреть вывод подобного кода, то возникнет много вопросов.
Подписывайтесь на канал 👉@pythonofff
Дескрипторы
Дескриптор – это атрибут объекта со “связанным поведением”, то есть такой атрибут, при доступе к которому его поведение переопределяется методом протокола дескриптора. Если хотя бы один из этих методов определен в объекте, то можно сказать, что этот метод – дескриптор.
Для того, чтобы определить свой собственный дескриптор, обычно определяют три специальных метода класса __get__, __set__ или __delete__. После этого можно создать новый класс и в атрибут этого класса записать объект типа дескриптор.
У данного объекта будет переопределено поведение при доступе к атрибуту (__get__), при присваивании значений (__set__) или при удалении (__delete__).
Подписывайтесь на канал 👉@pythonofff
Геттеры и сеттеры
В объектно-ориентированных языках распространено использование геттеров и сеттеров для безопасной работы с приватными полями. Например, в C# для этого есть удобная конструкция { get; set; }.
В Python геттер реализуется через декоратор @ property, а сеттер в виде @ свойство.setter. В примере метод геттера называется age, поэтому декоратор сеттера – @ age.setter.
Оба метода должны иметь одинаковое название, по которому можно будет обращаться как к обычному атрибуту.
Подписывайтесь на канал 👉@pythonofff
FastAPI
FastAPI – фреймворк, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.
Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).
Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.
FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.
Подписывайтесь на канал 👉@pythonofff
Курс по frontend-разработке с junior до middle
Стань специалистом по frontend-разработке с помощью менторов. Оставь заявку!
Узнать больше
#реклама 16+
ykul.ru
О рекламодателе
Нижнее подчеркивание
В Python имя переменной может состоять из одного подчеркивания: _. Хотя обычно такие имена не достаточно описательны и не должны использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.
Во-первых, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны – например, в циклах for.
Во-вторых, интерактивный режим использует _ для хранения результата последнего выполненного выражения.
В-третьих, руководство модуля gettext рекомендует псевдоним его функции gettext() для _(), чтобы минимизировать загромождение вашего кода.
Подписывайтесь на канал 👉@pythonofff
Функция itertools.cycle
В пайтон есть классный модуль itertools для создания собственных итераторов. Функции данного модуля довольно эффективны в работе, поэтому их часто используют в реальных проектах.
Сегодня мы бы хотели показать вам функцию cycle() из itertools. Данная функция принимает на вход итерируемый объект и создает бесконечный итератор, циклически возвращающий элементы данного объекта. Фишка заключается в том, что когда элементы последовательности заканчиваются, итерация начинается вновь с первого элементы.
К примеру, функция cycle() из последовательности ['red', 'white', 'blue'] генерирует повторяющуюся бесконечную. Но важно при проходе при итерации по такому итератору предусмотреть выход из цикла (а не как у нас в первом случае с colors:). Так как это итератор, то мы можем использовать его для получения значений через функцию next(colors).
Мы также можем воспользоваться islice(), который вернет итератор по подмножеству переданного объекта.
Подписывайтесь на канал 👉@pythonofff
Курс «Разработчик 1С» от Яндекса.
За 6 месяцев освоите один из самых простых языков программирования и пройдёте стажировку
Зарегистрироваться
#реклама 16+
practicum.yandex.ru
О рекламодателе
Используем pathlib вместо os
Стандартная библиотека Python 3 содержит модуль pathlib, включающий в себя функцию Path(), достаточную для полноценной работы с файловыми путями.
Одной из самых крутых фич в работе с путями является замена os.path.join() на более удобный и элегантный вариант, изображенный на картинке.
По сути эта библиотека заменяет ранее используемые для работы с путями функции из модуля os (например os.mkdir или os.path) на более удобные.
Подписывайтесь на канал 👉@pythonofff
Нахождение наиболее частых элементов списка
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком Counter из библиотеки collections.
Метод Counter.most_common(x) возвращает x кортежей, в которых первое значение – элемент, а второе – количество его повторений.
Подписывайтесь на канал 👉@pythonofff
Random seed в Python
Генерация случайных чисел Python основана на предыдущем числе, поэтому использование системного времени – отличный способ гарантировать, что каждый раз, когда наша программа запускается, она генерирует разные числа. Мы можем использовать функцию random seed() для установки начального значения.
Подписывайтесь на канал 👉@pythonofff
Случайный список – choice(), shuffle(), sample()
Есть несколько функций для использования случайности в последовательности. Например, с помощью функции choice() вы можете получить случайный элемент из последовательности.
Подписывайтесь на канал 👉@pythonofff
Копирование файлов с помощью метода shutil()
Мы можем использовать модуль shutil для копирования файлов в Python. Эта утилита позволяет нам выполнять операции копирования и перемещения для разных файлов.
Подписывайтесь на канал 👉@pythonofff
Удаление файлов с помощью метода shutil.os.remove()
Модуль Python shutil предлагает метод remove() для удаления файлов из файловой системы.
Подписывайтесь на канал 👉@pythonofff
Закрытие открытого файла с помощью метода close()
Когда вы открываете файл в Python, чрезвычайно важно закрыть файл после внесения изменений. Это сохраняет любые изменения, которые вы сделали ранее, удаляет файл из памяти и предотвращает дальнейшее чтение или запись в программе.
Подписывайтесь на канал 👉@pythonofff
Функции str.split и rsplit() в Python
Функция split() в Python используется для разделения строки на список строк на основе разделителя.
В качестве разделителя используется аргумент sep. Если строка содержит последовательные разделители, возвращается пустая строка. Аргумент-разделитель также может состоять из нескольких символов
Подписывайтесь на канал 👉@pythonofff
Что можно делать в оболочке Python?
В оболочке можно делать практически все, что вообще позволяет делать язык Python: использовать переменные, циклы, условия для определения функций и т. д.
Символы >>> — это приглашение оболочки, тут вы можете вводить свои команды. Если ваши команды занимают несколько строк, например, при определении цикла, оболочка выводит троеточие …, которое сигнализирует о продолжении строки.
Подписывайтесь на канал 👉@pythonofff