🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤3👍2🔥1
🌎 ТОП-10: рейтинг лучших зарубежных работодателей в IT
При составлении рейтинга учитывали различные факторы из открытых данных портала Glassdoor, включая отзывы сотрудников, уровень лояльности действующих и бывших сотрудников, зарплата, льготы, бонусы и прочие бенефиты.
1️⃣ Red Hat
2️⃣ Gainsight
3️⃣ Box
4️⃣ MathWorks
5️⃣ ServiceNow
6️⃣ Marvell Technology
7️⃣ CrowdStrike
8️⃣ Fortinet
9️⃣ NetApp
🔟 Genentech
👉 Читать статью
При составлении рейтинга учитывали различные факторы из открытых данных портала Glassdoor, включая отзывы сотрудников, уровень лояльности действующих и бывших сотрудников, зарплата, льготы, бонусы и прочие бенефиты.
1️⃣ Red Hat
2️⃣ Gainsight
3️⃣ Box
4️⃣ MathWorks
5️⃣ ServiceNow
6️⃣ Marvell Technology
7️⃣ CrowdStrike
8️⃣ Fortinet
9️⃣ NetApp
🔟 Genentech
👉 Читать статью
👍4❤2🔥2
✨Операции над множествами в Python
Приводим список полезных операторов, которые помогают работать с множествами.
✔️& — пересечениe
✔️| — объединение
✔️- — разность множеств
✔️^ — cимметрическая разность множеств
✔️in — проверяет, входит ли элемент в множество
✔️<= — является ли первое множество подмножеством второго
✔️< — является ли первое множество правильным подмножеством второго
✔️>= — является ли первое множество надмножеством второго
✔️> — является ли первое множество правильным надмножеством второго
Приводим список полезных операторов, которые помогают работать с множествами.
s = {3}
z = {3, 4, 5, 6}
✔️& — пересечениe
print(s & z) # -> {3}
✔️| — объединение
print(s | z) # -> {3, 4, 5, 6}
✔️- — разность множеств
print(s - z) # -> set()
✔️^ — cимметрическая разность множеств
print(s ^ z) # -> {4, 5, 6}
✔️in — проверяет, входит ли элемент в множество
print(5 in z) # -> True
✔️<= — является ли первое множество подмножеством второго
print(s <= z) # -> True
✔️< — является ли первое множество правильным подмножеством второго
print(s < z) # -> True
✔️>= — является ли первое множество надмножеством второго
print(s >= z) # -> False
✔️> — является ли первое множество правильным надмножеством второго
print(s > z) # -> False
👍58🔥3❤2
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🐍⚙️ Python или Rust: что выбрать для анализа данных и машинного обучения
Хоть Python давно стал основным языком машинного обучения и анализа данных, у него есть конкуренты. На этот раз поговорим про Rust. Он гораздо сложнее Python, но у него есть два важных преимущества — высокая производительность, сопоставимая с C/C++, и надёжный механизм обеспечения безопасности. В статье сравниваем два языка подробнее.
👉Читать статью
Хоть Python давно стал основным языком машинного обучения и анализа данных, у него есть конкуренты. На этот раз поговорим про Rust. Он гораздо сложнее Python, но у него есть два важных преимущества — высокая производительность, сопоставимая с C/C++, и надёжный механизм обеспечения безопасности. В статье сравниваем два языка подробнее.
👉Читать статью
😁15👍9🔥4👏3
🏆 Топ-10 Python-библиотек 2023 года
С 2015 года ребята из компании Tryolabs выпускают списки лучших библиотек для Python. Это новый топ за 2023 год. Критерии отбора неизвестны, но посмотреть всё равно интересно — можно найти что-то полезное для себя.
💛LiteLLM — обеспечивает бесшовную интеграцию с различными языковыми моделями, позволяя использовать унифицированный формат как для ввода, так и для вывода вне зависимости от применяемой LLM.
💛PyApp — упрощает распространение и установку Python-приложений. Это достигается за счёт встраивания Python в самоустанавливающийся пакет, совместимый со всеми операционными системами.
💛Taipy — позволяет дата-сайентистам создавать интерактивный Web UI для ML-продуктов.
💛MLX — это библиотека от Apple для машинного обучения на процессорах Apple Silicon.
💛Unstructured — набор инструментов для предварительной обработки текста.
💛ZenML и AutoMLOps — два мощных инструмента для создания MLOps-пайплайнов.
💛WhisperX — библиотека для распознавания речи, способная обнаружить нескольких говорящих и менее склонная к галлюцинациям.
💛AutoGen — позволяет создавать LLM-приложения с несколькими агентами, способными общаться друг с другом для решения задач.
💛Guardrails — помогает заставить LLM возвращать структурированные, качественные ответы определённого типа.
💛Temporian — библиотека для простой и эффективной предобработки и фича-инжиниринга временных данных в Python.
С 2015 года ребята из компании Tryolabs выпускают списки лучших библиотек для Python. Это новый топ за 2023 год. Критерии отбора неизвестны, но посмотреть всё равно интересно — можно найти что-то полезное для себя.
💛LiteLLM — обеспечивает бесшовную интеграцию с различными языковыми моделями, позволяя использовать унифицированный формат как для ввода, так и для вывода вне зависимости от применяемой LLM.
💛PyApp — упрощает распространение и установку Python-приложений. Это достигается за счёт встраивания Python в самоустанавливающийся пакет, совместимый со всеми операционными системами.
💛Taipy — позволяет дата-сайентистам создавать интерактивный Web UI для ML-продуктов.
💛MLX — это библиотека от Apple для машинного обучения на процессорах Apple Silicon.
💛Unstructured — набор инструментов для предварительной обработки текста.
💛ZenML и AutoMLOps — два мощных инструмента для создания MLOps-пайплайнов.
💛WhisperX — библиотека для распознавания речи, способная обнаружить нескольких говорящих и менее склонная к галлюцинациям.
💛AutoGen — позволяет создавать LLM-приложения с несколькими агентами, способными общаться друг с другом для решения задач.
💛Guardrails — помогает заставить LLM возвращать структурированные, качественные ответы определённого типа.
💛Temporian — библиотека для простой и эффективной предобработки и фича-инжиниринга временных данных в Python.
👍20🔥3
👩💻 Объясняем, почему строчка
Это цепочка сравнений. Выражение можно переписать как
Закрепим знания тестом. В опросе ниже укажите, что выведет следующий код:
5>4 == True
выведет FalseЭто цепочка сравнений. Выражение можно переписать как
5 > 4 and 4 ==
True
. В первом сравнении получим True, а во втором — False. True and False
— это False.Закрепим знания тестом. В опросе ниже укажите, что выведет следующий код:
a = 5
b = 3
c = 5
print(a == c > b <= (a — 2))
❤11👍5🔥1
🤔13👍7👏3
🐍 Фреймворк FastStream для эффективной обработки очереди сообщений
Это наследник FastKafka. FastStream упрощает процесс написания продюсеров и консьюмеров для очередей сообщений, автоматически выполняя весь парсинг, работу в сети и генерацию документации.
Преимущества фреймворка:
✅ Поддерживает Kafka, RabbitMQ, NATS, Redis.
✅ Использует возможности Pydantic для сериализации и валидации входящих сообщений.
✅ Управляет зависимостями с помощью встроенной системы DI FastStream.
✅ Полностью совместим с FastAPI.
✅ Оптимизирован для автоматической генерации кода с использованием GPT и Llama.
🧑💻Репозиторий фреймворка на GitHub
✍️Блогпост о возможностях FastStream
Это наследник FastKafka. FastStream упрощает процесс написания продюсеров и консьюмеров для очередей сообщений, автоматически выполняя весь парсинг, работу в сети и генерацию документации.
Преимущества фреймворка:
✅ Поддерживает Kafka, RabbitMQ, NATS, Redis.
✅ Использует возможности Pydantic для сериализации и валидации входящих сообщений.
✅ Управляет зависимостями с помощью встроенной системы DI FastStream.
✅ Полностью совместим с FastAPI.
✅ Оптимизирован для автоматической генерации кода с использованием GPT и Llama.
🧑💻Репозиторий фреймворка на GitHub
✍️Блогпост о возможностях FastStream
👍20🔥5🎉1
Вопросы с собеседований, гайды и полезные материалы: собрали свежий #дайджест по Python
🩷 Добавление логирования и уведомлений в веб-проекты на Flask
В статье подробно рассказывается, как создать страницы ошибок и улучшить пользовательский опыт.
🩷 Реальное применение match/case
Статья о том, где может пригодиться конструкция match/case (появилась в Python 3.10).
🩷 100 вопросов для подготовки к собесу Python
Автор статьи на Хабре составил подборку из вопросов с собеседований на позицию джуна Python-разработчика.
🩷 Сколько на самом деле строк на C нужно, чтобы выполнить a + b в Python?
Тем временем на том же Хабре разворачиваются баталии по поводу того, что происходит внутри среды исполнения Python для выполнения простого действия — a + b. Указанная по ссылке статья — ответ на недавний пост одного из пользователей.
🩷 Замыкания и декораторы в Python: часть 1 — замыкания
Автор попытался объяснить концепцию замыканий.
🩷 Добавление логирования и уведомлений в веб-проекты на Flask
В статье подробно рассказывается, как создать страницы ошибок и улучшить пользовательский опыт.
🩷 Реальное применение match/case
Статья о том, где может пригодиться конструкция match/case (появилась в Python 3.10).
🩷 100 вопросов для подготовки к собесу Python
Автор статьи на Хабре составил подборку из вопросов с собеседований на позицию джуна Python-разработчика.
🩷 Сколько на самом деле строк на C нужно, чтобы выполнить a + b в Python?
Тем временем на том же Хабре разворачиваются баталии по поводу того, что происходит внутри среды исполнения Python для выполнения простого действия — a + b. Указанная по ссылке статья — ответ на недавний пост одного из пользователей.
🩷 Замыкания и декораторы в Python: часть 1 — замыкания
Автор попытался объяснить концепцию замыканий.
❤10👍4
👏 Вышел Mypy 1.8 — новая версия статического анализатора типов для Python
В Mypy 1.8 добавлены некоторые новые функции, улучшена производительность и исправлены баги.
Вот что было улучшено:
🔸 сообщения об ошибках для super проверок, добавлено больше тестов.
🔸 проверки типов: изменения в обработке isinstance, дополнительные условия для @final и TypedDict.
🔸 Stubtest: лучшая обработка нестандартных значений по умолчанию, поддержка декоратора @type_check_only.
🧑💻Прочесть обо всех изменениях можно здесь
В Mypy 1.8 добавлены некоторые новые функции, улучшена производительность и исправлены баги.
Вот что было улучшено:
🔸 сообщения об ошибках для super проверок, добавлено больше тестов.
🔸 проверки типов: изменения в обработке isinstance, дополнительные условия для @final и TypedDict.
🔸 Stubtest: лучшая обработка нестандартных значений по умолчанию, поддержка декоратора @type_check_only.
🧑💻Прочесть обо всех изменениях можно здесь
👍12
🤓 Нашли репозиторий с большим количеством шпаргалок по Python на русском языке
Есть PDF-ки по:
▫️типам данных;
▫️функциям;
▫️декораторам;
▫️итераторам и генераторам;
▫️различным модулям;
▫️ООП и многому другому.
🔗Изучить можно по этой ссылке
Есть PDF-ки по:
▫️типам данных;
▫️функциям;
▫️декораторам;
▫️итераторам и генераторам;
▫️различным модулям;
▫️ООП и многому другому.
🔗Изучить можно по этой ссылке
❤24🔥9👍4
🐍 Что делает класс ChainMap() модуля collections
Он позволяет объединять несколько словарей так, чтобы их можно было рассматривать как единое целое.
✏️Лучше всего посмотреть на примере:
Экземпляр ChainMap не копирует входные словари, а хранит ссылки на них. Поэтому он может быть более эффективным по памяти по сравнению с другими методами, которые создают копии словарей.
✏️Обновление или вставка в ChainMap затрагивают только первый входной словарь. Снова посмотрим на примере:
#код
Он позволяет объединять несколько словарей так, чтобы их можно было рассматривать как единое целое.
✏️Лучше всего посмотреть на примере:
d1 = dict(a=1, b=3)
d2 = dict(a=2, b=4, c=6)
from collections import ChainMap
chain = ChainMap(d1, d2)
print(chain['a']) # -> 1
print(chain['c']) # -> 6
Экземпляр ChainMap не копирует входные словари, а хранит ссылки на них. Поэтому он может быть более эффективным по памяти по сравнению с другими методами, которые создают копии словарей.
✏️Обновление или вставка в ChainMap затрагивают только первый входной словарь. Снова посмотрим на примере:
chain['c'] = -1
print(d1) # -> {'a': 1, 'b': 3, 'c': -1}
print(d2) # -> {'a': 2, 'b': 4, 'c': 6}
#код
👍23❤2
🪜 8 уровней использования конструкции match/case в Python
Начиная с Python 3.10 в языке есть структурное сопоставление с шаблоном (structural pattern matching). В новой статье на Medium приводится восемь примеров использования сопутствующей конструкции match/case: от элементарного до продвинутого.
☑️ Простое сопоставление шаблонным строкам
Например, можно избежать многократного использования условных конструкций:
☑️ Использование подчёркивания для остальных случаев
☑️ Комбинирование нескольких паттернов в один случай
Приведённый выше пример можно усложнить:
☑️ Использование оператора as, чтобы улучшить логирование
☑️ Cопоставление шаблонным кортежам и спискам
☑️ Сопоставление шаблонным словарям
☑️ Использование дополнительных условий
☑️ Сопоставление шаблонным классам
🔗Прочитать оригинал статьи можно по этой ссылке
Начиная с Python 3.10 в языке есть структурное сопоставление с шаблоном (structural pattern matching). В новой статье на Medium приводится восемь примеров использования сопутствующей конструкции match/case: от элементарного до продвинутого.
☑️ Простое сопоставление шаблонным строкам
Например, можно избежать многократного использования условных конструкций:
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400:
return "Bad Request"
print(handle_http_status(200)) # -> Success!
☑️ Использование подчёркивания для остальных случаев
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400:
return "Bad Request"
case _:
return "Unknown Status"
☑️ Комбинирование нескольких паттернов в один случай
Приведённый выше пример можно усложнить:
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400 | 401 | 403 | 404:
return "Client Error"
print(handle_http_status(404)) # -> Client Error
☑️ Использование оператора as, чтобы улучшить логирование
def handle_http_status(status_code):
match status_code:
case 200:
return "Success!"
case 400 | 401 | 403 | 404 as Err:
return f"Client Error:{Err}"
print(handle_http_status(404)) # -> Client Error:404
☑️ Cопоставление шаблонным кортежам и спискам
def execute_command(command):
match command:
case ("print", message):
print(f"{message}")
case ["save", filename, data]:
print(f"Saving {data} to {filename}")
case ("delete", filename):
print(f"Deleting {filename}")
case ('todo', *something):
print(f"To do: {' '.join(something)}")
case _:
print("Unknown Command")
execute_command(("print", "Hello, Yang Zhou!")) # -> Hello, Yang Zhou!
☑️ Сопоставление шаблонным словарям
def handle_user_action(action):
match action:
case {"type": "login", "username": user, "password": pw}:
return f"Login attempt by {user} with password {pw}"
case {"type": "logout", "username": user}:
return f"User {user} logged out"
case {"type": "signup", "username": user, "email": email}:
return f"New signup by {user} with email {email}"
case _:
return "Unknown action"
print(handle_user_action({"type": "login", "username": "Yang Zhou", "password": "123456"})) # -> Login attempt by Yang Zhou with password 123456
☑️ Использование дополнительных условий
def handle_user_op(action):
match action:
case "login" if user_not_logged_in():
return "User needs to log in"
case "login":
return "Already logged in"
case "logout":
return "Logging out"
case _:
return "Unknown action"
☑️ Сопоставление шаблонным классам
class Circle:
def __init__(self, radius):
self.radius = radius
class Rectangle:
def __init__(self, length, width):
self.length = length
self.width = width
def process_shape(shape):
match shape:
case Circle(radius=r):
return f"Processing a circle with radius {r}"
case Rectangle(length=l, width=w):
return f"Processing a rectangle with length {l} and width {w}"
🔗Прочитать оригинал статьи можно по этой ссылке
👍50❤4
Мы продолжаем собирать ваши истории о смене профессии и трудоустройстве в IT, чтобы написать большую аналитическую статью.
👉Если вы еще не рассказывали о своем опыте, пройдите короткий опрос по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11
🐍🧫 Создаём игру «Жизнь» Джона Конвея на Python
Напишем алгоритм эволюции клеточных автоматов и разработаем интерфейс командной строки (CLI) для взаимодействия с игрой.
👉Читать статью
Напишем алгоритм эволюции клеточных автоматов и разработаем интерфейс командной строки (CLI) для взаимодействия с игрой.
👉Читать статью
👍17😁2
🐍 У нас есть еженедельная email-рассылка, посвященная последним открытиям и тенденциям в мире Python.
В ней:
● Новые возможности в последних версиях Python
● Работа с базами данных и SQL в Python
● Веб-разработка на Django и Flask
● Машинное обучение и анализ данных с помощью Python
● Автоматизация и работа с API на Python
● Тестирование и отладка кода на Python
● Задачи для новичков с решениями
👉Подписаться👈
В ней:
● Новые возможности в последних версиях Python
● Работа с базами данных и SQL в Python
● Веб-разработка на Django и Flask
● Машинное обучение и анализ данных с помощью Python
● Автоматизация и работа с API на Python
● Тестирование и отладка кода на Python
● Задачи для новичков с решениями
👉Подписаться👈
❤🔥4👍2
p1i8awsivji51.jpeg
580.7 KB
✍️Небольшая шпаргалка по дебаггингу в Python
Вот алгоритм действий при ситуации, когда код не работает:
❔ Начните с вопроса: появляется ли ошибка при запуске скрипта?
✔️ Если да:
Посмотрите на тип ошибки. Вот основные:
🔤 AttributeError — возникает, когда вы пытаетесь вызвать метод не на том объекте;
🔤 SyntaxError — вы где-то ошиблись с синтаксисом;
🔤 NameError — используете имя, которое пока не определено;
🔤 TypeError — пытаетесь делать что-то с неподходящим по типу объектом;
🔤 IOErro — пытаетесь открыть файл, который не существует;
🔤 IndentationError — ошибка отступа;
🔤 KeyError — пытаетесь обратиться по ключу, которого нет в словаре.
✖️ Если нет:
Посмотрите, есть ли в коде циклы (петли) или условные выражения (if). Исходя из ответа на этот вопрос, проводите дальнейший анализ.
Вот алгоритм действий при ситуации, когда код не работает:
Посмотрите на тип ошибки. Вот основные:
Посмотрите, есть ли в коде циклы (петли) или условные выражения (if). Исходя из ответа на этот вопрос, проводите дальнейший анализ.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2