Ищем человека, который будет строить сообщество по темам Python / Data Science / AI в Tproger
Если вы довольно неплохо разбираетесь в этих темах и при этом видите в себе желание рассказывать об этом другим разработчикам и вовлекать их в горячие обсуждения — возможно, это именно ваша вакансия.
Подробности, тестовое задание и отклик здесь: https://tprg.ru/GEZL
Декораторы в Python: понять и полюбить
Декораторы — это вам не «обычное» процедурное программирование, когда вы объявляете функции с блоками кода, и просто вызываете их. В Python всё куда интереснее!
Если вкратце, декоратор — это функция, которая позволяет обернуть другую функцию и расширить её функциональность без изменения её кода. Новички не очень любят декораторы и зря. А вот опытные Python-программисты знают, что это один из самых полезных инструментов в Python.
Давайте разбираться, что это за декораторы, как их использовать и как задействовать всю их магию: https://tproger.ru/translations/demystifying-decorators-in-python/
Самые популярные вопросы на собеседовании: «Объясните, как работает функция reduce»reduce
принимает функцию и последовательность — и проходит по этой последовательности. На каждой итерации в функцию передаются как текущий элемент, так и выходные данные предыдущего элемента. В конце концов, возвращается одно значение:from functools import reduce
def add_three(x,y):
return x + y
li = [1,2,3,5]
reduce(add_three, li)
#=> 11
Возвращается 11, то есть сумма 1+2+3+5.
#собеседование
Самые популярные вопросы на собеседовании: «Как работает функция map?»
Обычно, когда нужно обработать и преобразовывать все элементы в итерируемом объекте, первое, что напрашивается, это цикл for
.
Но у for
есть несколько недостатков, которых можно избежать, используя map()
:
1. Поскольку map()
написан на C и сильно оптимизирован, его внутренний подразумеваемый цикл более эффективен, чем обычный цикл for
.
2. Второе преимущество использования map()
— потребление памяти. С помощью for
вам нужно сохранить весь список. А map()
вы получаете элементы по запросу, и только один элемент находится в памяти в данный момент.
То есть map()
полезен, когда вам нужно применить функцию преобразования к каждому элементу в коллекции или в массиве и преобразовать их в новый массив. Она возвращает объект (итератор), который перебирает значения, применяя функцию к каждому элементу. В случае необходимости объект можно преобразовать в список:def add_three(x):
return x + 3
li = [1,2,3]
list(map(add_three, li))
#=> [4, 5, 6]
Например, здесь к каждому элементу в списке мы добавляем число 3.
#собеседование
Дайджест Python #5: как сделать свой Copilot и работать с данными в Pandas
Собрали свежий дайджест из лучших материалов по Python.
В нём вы узнайте, как написать свой аналог GitHub Copilot без знаний об искусственном интеллекте, как работать с данными и памятью в Pandas и как написать нейросеть, которая сможет самостоятельно распознавать объекты.
#python #нейросети
OpenAI представила GPT-4 и расскажет о ней подробнее на презентации в 23:00 по мск
Как и обещали, разработчики Microsoft и OpenAI, в целом улучшили GPT-4 и внедрили мультимодальные модели. Теперь GPT-4 может взаимодействовать ещё и через изображения (пример, на 1 скриншоте), звуки и видео. А ещё она свободно общается на разных языках, гораздо лучше сдаёт экзамены и лучше пишет о сложных вопросах, а не только общих темах.
Рассказываем, что ещё нового в новой модели от OpenAI, как получить к ней доступ и где посмотреть презентацию: https://tproger.ru/articles/openai-predstavila-gpt-4-chto-novogo-i-kak-poprobovat-novinku/
#нейросети #openai #microsoft
Cоздаём свою канбан-доску на Django, DRF и Alpine.js
Наверняка вы уже работали с канбан-досками? Это сервисы типа Jira или Trello, они помогают здорово структурировать и мониторить рабочие процессы. А особенно они полезны, когда задачи состоят из кучи этапов, например, согласования, выполнения, ревью и продакшена.
А почему нам не сделать свою канбан-доску с блекджеком, так сказать, и всем прилегающим? Вот отличная статья, которая поможет разработать собственную канбан-доску и развернуть её на облачном сервере:
https://habr.com/ru/company/selectel/blog/721022/
#django #петпроект
Большая подборка книг по Python от сообщества
В подборке есть книги как для новичков, так и для опытных специалистов. Репозиторий постоянно обновляется, так что велик шанс найти что-нибудь свеженькое.
https://github.com/pamoroso/free-python-books
#книги #подборка
Чем больший объем данных используют на проекте, чем выше нагрузка на систему – тем более продвинутый SQL нужен разработчикам
Изучить SQL и свободно использовать его в работе поможет курс Практикума.
После 3 месяцев курса разработчики смогут:
— уверенно пользоваться простыми селектами, джоинами, индексами и оконными функциями;
— отладить запрос, который сгенерирован через ORM;
— составить сложные запросы на нативном SQL;
— применить продвинутый SQL, чтобы писать код для высоконагруженных систем,
— чувствовать себя спокойно на собеседованиях.
Записывайтесь и развивайтесь в карьере
Реклама АНО ДПО «Образовательные технологии Яндекса»
Самые популярные вопросы на собеседовании: «В чем разница между методами экземпляра, класса и статическими методами в Python?»
Методы экземпляра: принимают параметр self
и относятся к определенному экземпляру класса.
Статические методы: используют декоратор @staticmethod
, не связаны с конкретным экземпляром и являются автономными (атрибуты класса или экземпляра не изменяются).
Проиллюстрируем разницу на вымышленном классе CoffeeShop
:class CoffeeShop:
specialty = 'espresso'
def __init__(self, coffee_price):
self.coffee_price = coffee_price
# instance method
def make_coffee(self):
print(f'Making {self.specialty} for ${self.coffee_price}')
# static method
@staticmethod
def check_weather():
print('Its sunny')
# class method
@classmethod
def change_specialty(cls, specialty):
cls.specialty = specialty
print(f'Specialty changed to {specialty}')
У класса CoffeeShop
есть атрибут specialty
(фирменный напиток), установленный по умолчанию в значение 'espresso
'. Каждый экземпляр CoffeeShop
инициализируется с атрибутом coffee_price
. У него также три метода: метод экземпляра, статический метод и метод класса.
Давайте инициализируем экземпляр с атрибутом coffee_price
, равным 5. Затем вызовем метод экземпляра make_coffee
:coffee_shop = CoffeeShop('5')
coffee_shop.make_coffee()
#=> Making espresso for $5
Теперь вызовем статический метод. Статические методы не могут изменять состояние класса или экземпляра, поэтому обычно используются для служебных функций, например, сложения двух чисел. Наши проверяют погоду. Говорят, что солнечно:coffee_shop.check_weather()
#=> Its sunny
Теперь используем метод класса для изменения фирменного напитка (specialty
), а затем сделаем кофе (make_coffee
):coffee_shop.change_specialty('drip coffee')
#=> Specialty changed to drip coffee
coffee_shop.make_coffee()
#=> Making drip coffee for $5
Обратите внимание, что make_coffee
раньше делал эспрессо, а теперь заваривает капельную кофеварку (drip coffee
).
Поздравляем с международным женским днём!
И делимся с вами несколькими хорошими материалами:
— Если не знали, до 1984 года женщин-программистов было больше, чем мужчин. Интересное исследование и краткий исторический экскурс про вклад женщин в IT: https://mel.fm/deti/shkolniki/987324-women_programming
— Минутка ностальгии. Женщины в Bell Labs 1960-х годов — в фотографиях на фоне огромных ЭВМ тех времён: https://tproger.ru/articles/women-of-bell-labs-in-the-1960s/
— Как относятся к девушкам-программистам сейчас, и сложно ли девушке устроиться на работу в IT-отрасль, особенно если она хочет быть именно программистом: https://tproger.ru/experts/36/
#история
Кстати, про литкод: определяем ваш уровень решения LeetCode задач от 1 до 5
Недавно я уже писал про интересную статью, в которой рассмотрели решение одной из сложных задач с платформы. Напомню, что LeetCode — это своего рода тренажёр по всяким заковыристым алгоритмическим задачам для подготовки к техническим собеседованиям.
И вот ещё более интересная статья про реальный опыт с LeetCode и (внимание!) подготовке к интервью в FAANG подобные компании путём разбиения её на уровни.
Цифры местами грубые, утверждения субъективные, но очень советую к прочтению, если интересуетесь темой: https://habr.com/ru/post/713498/
#задачи
SM Lab устраивает One Day Offer для Middle/Senior дата-инженеров
One Day Offer от SM Lab — это отличная возможность пройти все этапы отбора и получить оффер от SM Lab всего за один день. Также будут рады коллегам из смежных областей.
Стек: Vanilla Hadoop, Kafka, Spark, Airflow, ClickHouse, Jira, Confluence, GitLab.
Примеры задач:
— реализация ETL в Hadoop (с помощью Airflow);
— работа с различными источниками данных: Oracle, MS SQL, API личных кабинетов, микросервисы;
— батч и стримы с помощью PySpark и Kafka;
— подготовка витрин для анализа (Hive + Spark+ SQL)
Станьте частью команды Sportmaster Lab — успейте отправить форму до 23 марта: https://tprg.ru/vs5S
Реклама ООО «Спортмастер» LjN8JuNFS
Представляете, сколько получают IT-шники? Причём даже те, кто вообще не умеют программировать и за всю жизнь ни строчки кода не написали
Средняя зп в IT — 140 тыс. (по данным hh.ru). Новички получают от 70 тыс. При этом имеют кучу льгот, удалёнку и свободный график.
Сейчас IT-компании готовы брать даже совсем зелёных новичков, без дипломов и опыта работы. И таким новичком можете стать вы.
Запишитесь на бесплатный марафон, чтобы узнать как попасть в крупную IT-компанию, пообщаться с профессионалами об их опыте и разобраться в том, какая именно профессия вам подходит: https://tprg.ru/2t7r
Реклама ОАНО ДПО «Скаэнг»
Что вы делали на этой неделе? Пост хвастовства за 27 февраля — 3 марта
Не важно, разработчик вы или тестировщик, деврел или эйчар. Расскажите, какие задачи вы героически решили, и делитесь успехами. Кидайте всё, чем хочется похвастаться: текст, скриншоты кода и даже ссылочки на видео:
https://tproger.ru/articles/chto-vy-delali-na-jetoj-nedele-post-hvastovstva-za-27-fevralja-3-marta/
#обсуждение
Топ 5 ресурсов для изучения Python: часть 3
На канале уже есть пара подборок из самых годных ресурсов, которые помогают прокачаться в Python. Делюсь ещё пятёркой самых достойных.
Сохраняйте себе и учитесь на здоровье:
1. Pythonspot
Pythonspot это каталог ресурсов и материалов по Python, в котором весь контент разделён на категории: по уровню навыков, тематике (пользовательские интерфейсы, сети и т. д.) и платформе (Android, iOS и т.п.).
2. Онлайн-книга «Укус питона»
Это отличный учебник для начинающих. Более опытные программисты могут смело использовать его в качестве справочника — на случай, если нужно будет что-то вспомнить. Книга бесплатная, есть русский перевод.
3. Курс по Python от университета Райса на Coursera
Курс замёт займет несколько недель, зато регистрация и сам курс совершенно бесплатны. А вот если будет нужен сертификат, за него уже придётся платить.
4. Ускоренный курс по Python
Это серия документов и презентаций, которые могут использоваться для быстрого обучения языку Python программистов, знающих другие языки.
5. Real Python
Real Python это премиальный онлайн-курс с более чем 1300 страниц контента, 9 часов видео, упражнениями и примерам кода. Подписка платная, но на сайте есть много статей, которые можно читать совершенно бесплатно.
#подборка
Генерируем 2D-мир с помощью клеточного автомата на Python
Вообще, клеточный автомат сам по себе очень интересная штука. Простыми словами, это — модель, в которой состояние ячеек-клеток изменяется в зависимости от окружающих её клеток.
Простейшие клеточные автоматы используются в криптографии, моделировании физических процессов, поведения людей, в биологии, и в целой куче других важных и интересных штук. Да и вообще, это очень красиво и залипательно. И вот одно из необычных применений для клеточных автоматов — генерация карты для 2D-мира.
Хорошая статья, в которой можно попрактиковаться сразу и в геймдеве, и в теории клеточных автоматов, и в принципе закодировать что-нибудь интересное на питоне, вместо очередного калькулятора или просмотрщика погоды: https://habr.com/ru/post/721956/
#алгоритмы
Python для начинающих: дорожная карта в 2023 году
Это просто просто огромная крутая дорожная карта по изучению Python с нуля. Не смотрите, что партнёрский материал — это колаб Tproger и Skypro. Ребята просто честно помечают такие вещи, но годноты от этого меньше не становится.
В общем, смотрите, изучайте и сохраняйте, чтобы не потерять: https://tproger.ru/articles/python-roadmap-2023-ljn8jvxfj/
#шпаргалки
Как искать работу в IT
Лучше всего — в профессиональном сообществе. Если в вашем окружении нет опытных спецов, познакомиться с ними можно в карьерных группах, которые создают IT-компании.
«Карьера в Ростелекоме» — канал, на который стоит подписаться всем, кто ищет полезные контакты, следит за IT-рынком и мониторит предложения работодателей в этой сфере.
Каждую неделю здесь публикуют дайджест вакансий и интервью с сотрудниками. Они делятся опытом, рассказывают о важных софт-скилах и интересных проектах, над которыми работают.
Например, команда разработчиков рассказала, как не нашла подходящий конструктор дашбордов и создала свой.
Подписывайтесь, если хотите знать больше о новых технологиях и разработках
Реклама ПАО «Ростелеком» LjN8Kaa7b
5 полезных, но малоизвестных библиотек для Python
Многие из нас работали с Flask, NumPy, OpenCV и другими популярными библиотеками питона. Они хорошо поддерживаются, постоянно развиваются, у них большое коммьюнити и огромное количество гайдов.
Но есть несколько очень крутых, но пока малоизвестных библиотек, которые могут оказаться очень полезными.
И вот 5 самых интересных из них:
— Funcy содержит более 100 полезных методов и декораторов, собранных в одной библиотеке.
— JsonObject — удобная библиотека для быстрого преобразования json в объекты Python.
— Pdir2 — отличная библиотека для замены работы со стандартным dir(). Основные преимущества этой библиотеки:
— NetworkX — это очень большая и удобная библиотека для Python с множеством встроенных функций для работы с графами и их выводом.
— You-get — удобный инструмент для скачивания видео, фото и аудио файлов с большинства популярных платформ.
А вот статья, в которой на примерах показали, как с ними работать и чем они могут быть полезны: https://habr.com/ru/company/ruvds/blog/721834/
Берите на заметку, чтобы через полгода-года смело сказать, что вы юзали их, пока это ещё не было мейнстримом.
#подборка #библиотека
Новый выпуск программы для IT-инженеров avito.code!
В этом видео программист из Авито объясняет, как искать элементы, добавлять и удалять теги и структуры, парсить код через редактор NeoVim. А ещё вы узнаете, какие плагины помогут в работе и почему treesitter нужен вообще всем:
https://tprg.ru/3cPK
Реклама ООО «Авито Тех»
Самые популярные вопросы на собеседовании: «В чём разница между func и func()?»
Это совсем несложный вопрос, но многих новичков он ставит в ступор. На самом деле вопрос нужен только для того, чтобы проверить ваше понимание, что все функции в Python также являются объектами:def func():
print('Im a function')
func
#=> function __main__.func>
func()
#=> Im a function
func
— это представляющий функцию объект, который можно назначить переменной или передать другой функции. А вот функция func()
уже вызывает функцию и возвращает результат. Вот и всё :)
#собеседование
Объяснение:
Значение varTwo
передаётся в функцию func()
. varOne[1, 2, 3]
передаётся туда же как ещё одно значение
При этом внутри функции arr[0] = 0
изменяет значение по индексу [0]
в списке. Отсюда следует, что varOne = [0,2,3]
Если ещё не видели, делюсь большим питоном!
birp (борп) — большой русский питон, судя по всему, чей-то мемный проект, который позволяет писать код на русском, но всё ещё пользоваться всеми преимуществами Питона. Транслятор переводит не только ключевые слова, но и встроенные функции, типы, магические методы, а так же некоторые другие слова: https://github.com/evtn/birp
Например, код:граница = целое(ввод("Введите верхнюю границу: "))
для число в диапазон(граница):
вывод(число)
Транслируется в:bound = int(input("Введите верхнюю границу: "))
for number in range(bound):
print(number)
Если честно, даже не знаю, каким хэштегом помечать такие посты. Как думаете, как помечать такие посты, чтобы потом их можно было найти? #кек, #треш, #угар, #зверобой? Помогите придумать достойный тег в комментах, чтобы не терять годноту :)
Больше ботов богу ботов: создаём бота, использующего Яндекс.Диск
В этом гайде вы узнаете, как создать Telegram-бота на Python с помощью библиотеки aiogram. Вы подробно рассмотрите процесс создания бота, начиная от регистрации в Telegram, заканчивая разбором программного кода:
https://habr.com/ru/post/720130/
#бот #telegram
VS Code, python, контейнеры — как обуздать эту триаду и разрабатывать внутри контейнера
Наверняка, у каждого был такой момент, когда понимаешь, что простенького редактора или родной среды программирования Python недостаточно и хочется начать программировать по-взрослому.
Но оказывается, что навороченные редакторы кода ещё и настроить правильно нужно. А чтобы полностью настроить среду под себя, иногда уходит очень приличное количество времени.
Это небольшой туториал о настройке VS Code для работы с Python. Просто, по делу, а если планируете работать с контейнерами, то вам отдельно повезло: https://habr.com/ru/company/ruvds/blog/717110/
#vscode
Отгадай слово: как создать игру с элементами машинного обучения и выйти в ноль за 2 месяца
Интересная история, как ребята разработали игру, в которую за два месяца сыграли уже более 107 тысяч уникальных пользователей.
Такие истории на самом деле хороши тем, что там нет успешного успеха и всех этих «мы бросили универ и полгода разрабатывали синхрофазо2048 в гараже». Просто ребята сели, собрали игру на Python, потратились на серваки, набили шишек и в итоге получили очень хороший опыт. И хотя бы затраты на сервак окупили.
Как разрабатывали, как монетезировали и как во всём этом прижился ИИ — можно почитать в статье: https://habr.com/ru/company/aitalenthub/blog/718064/
#ml