Telegram Web
💪 TARIFF величайший Python-пакет, который делает импорты «великими» снова

TARIFF — это шуточный репозиторий в духе политической сатиры, который позволяет вводить пошлины на Python-библиотеки. Несмотря на ироничную подачу, проект набирает популярность в Python-сообществе.

Установка:
pip install tariff


Использование:
import tariff

# Устанавливаем пошлины (название_пакета: процент)
tariff.set({
"numpy": 50, # 50% пошлина на numpy
"pandas": 200, # 200% на pandas
"requests": 150 # 150% на requests
})

# Теперь при импорте эти пакеты будут замедлены!
import numpy # +50% к времени импорта
import pandas # +200%


➡️ Как работает:
— TARIFF измеряет время оригинального импорта
— Умножает его на тариф
— Показывает триумфальное сообщение о введённых санкциях

➡️ Ссылка на репозиторий: https://clc.to/0TnspA

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43👍5❤‍🔥22👏1
От многомерности к сути: чему нас учит PCA

На собеседовании важно уметь выделить главное — свои сильные стороны, мышление и ценности. Это помогает справляться со стрессом, неожиданными вопросами и субъективной оценкой.

В машинном обучении есть похожий подход — PCA (метод главных компонент). Он сокращает размерность данных, устраняя шум и второстепенные детали, и помогает сфокусироваться на самом важном.

В новой статье мы разберём:
• Как работает PCA
• Зачем он нужен
• Как применять его на практике — например, для анализа доходностей акций S&P 500

🐸 Подробнее: https://proglib.io/sh/uXsDlt75MY

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4😁2
✔️ Лучшие практики импорта модулей в Python

В этом посте рассмотрим лучшие практики импорта модулей в Python, чтобы код был чистым и эффективным.

1⃣ Используйте явный импорт

Старайтесь использовать явный импорт, а не from module import *, чтобы избежать конфликтов имен и улучшить читаемость кода.

# Плохо
from math import *

# Хорошо
from math import sqrt, pi


Явный импорт помогает лучше понять, какие именно функции или классы используются в вашем коде, и предотвращает «загрязнение» пространства имен.

2⃣ Группируйте импорты правильно

Существует стандартная практика группировки импортов, которая улучшает структуру кода и делает его более читаемым:
➡️ Стандартные библиотеки
➡️ Третьи библиотеки
➡️ Локальные модули

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

# Стандартные библиотеки
import os
import sys

# Третьи библиотеки
import requests
import numpy as np

# Локальные модули
from my_module import my_function


3⃣ Используйте абсолютные импорты

Абсолютные импорты — это указание полного пути до модуля, начиная от корня пакета. Это делает код более понятным и избегает проблем с относительными импортами, особенно в крупных проектах.

# Плохо
from .module import function

# Хорошо
from my_project.module import function


4⃣ Избегайте циклических импортов

Циклические импорты — это когда два или более модуля зависят друг от друга, что может привести к ошибкам при импорте.

Чтобы избежать таких проблем:
➡️ Разделяйте модули, чтобы минимизировать зависимость
➡️ Используйте импорты внутри функций или методов, если нужно избежать циклических зависимостей

# Плохо
# module_a.py
from module_b import function_b

# module_b.py
from module_a import function_a

# Хорошо
# module_a.py
def function_a():
from module_b import function_b
...


5⃣ Соблюдайте принцип «Не импортируйте то, что не используете»

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

# Плохо
import math

# Хорошо
from math import sqrt


6⃣ Пользуйтесь псевдонимами для часто используемых библиотек

Если библиотека часто используется в коде, имеет смысл использовать псевдонимы, чтобы сделать код компактным.

# Хорошо
import numpy as np
import pandas as pd

# Плохо
import numpy
import pandas


7⃣ Обрабатывайте ошибки импорта

В случае, если библиотека может не быть установлена в окружении, полезно обрабатывать ошибки импорта, чтобы избежать сбоев в работе программы.

try:
import some_library
except ImportError:
print("Не удалось импортировать some_library. Убедитесь, что она установлена.")


Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍162❤‍🔥1😁1
😆 Будем честны, все мы хоть раз были на YouTube-канале индуса, который обещал сделать сайт за 5 минут, но 40 минут объяснял, как установить Python.

😱 А между прочим, скоро мы можем потерять такой контент.

Нейронки теперь могут менять акценты на лету, так что в следующий раз, возможно, ваш индийский преподаватель станет Джейсоном из Лондона 💂!

Если хотите, пробуйте сами. Заходите на Krisp — 60 минут в день бесплатно.

Библиотека питониста #развлекалово
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10😁7🔥2
💰 Промпт, который поможет построить карьеру Python-разработчику

Хочешь не просто писать код, а расти как специалист и двигаться к роли, о которой мечтаешь?
Вот промпт, который поможет составить персональный план роста — с проектами, нетворкингом и прокачкой скиллов.

✍️ Промпт:
Help me create a personalized career growth plan based on my current role as a [your role] and my long-term goal to become a [desired position].  
Identify key skills I need to develop, high-impact projects I should pursue, and networking strategies to connect with industry leaders.
Include creative ways to showcase my expertise (e.g. speaking opportunities, internal initiatives) and suggest a 90-day action plan to track progress.

Bonus: Recommend 2-3 people I should learn from and what I can study from their career paths.


🌸 Как это работает:
— Помогает построить стратегию карьерного роста под твои цели
— Даёт идеи для прокачки и полезных активностей
— Формирует план на 90 дней + вдохновляет примерами карьер других

🌸 Примеры использования:
— Выйти из Junior уровня и наметить путь к Middle
— Спланировать переход в Team Lead или архитекторы
— Понять, какие активности на работе и вне её помогут выделиться и расти быстрее

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
😁74
🚀 Приручи алгоритмы: из формул в код за один воркшоп

Готовы превратить сложную теорию машинного обучения в практические навыки? Тогда приходите на наш воркшоп, который пройдет 21 апреля.

Что вас ждет на воркшопе:
🟢 Работа с реальными данными — никаких учебных датасетов, только то, что встречается в настоящих проектах.

🟢Снижение размерности с PCA — научитесь выделять главное из информационного шума.

🟢Случайный лес vs градиентный бустинг — разберемся, в чём ключевое различие и когда какой алгоритм эффективнее.

🟢Мастерство гиперпараметров — освоите тонкую настройку моделей для максимальной точности.

На нашем воркшопе вы не просто слушаете — вы делаете сами! Вы будете писать код на Python, применять популярные библиотеки и сразу видеть результат своей работы.

А самое ценное: каждый участник получит персональный code review от Марии Горденко — инженера-программиста, старшего преподавателя НИУ ВШЭ, руководителя магистратуры от ГК Самолет и Альфа-Банка.

Когда: 21 апреля
💸Стоимость: всего 3990₽

Только сегодня, до конца дня: 10 мест по промокоду kulich → 2 990 ₽.

➡️ Записаться на воркшоп: https://proglib.io/w/6f0e5775
👍21
🖥 Чтение или эффективность: что важнее при написании кода

Один из наших подписчиков поднял интересный и часто обсуждаемый вопрос среди разработчиков: что важнее — читаемость или эффективность кода?

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

1️⃣ Проверка на нечётность

Простой способ:
return n % 2 == 1


Быстрее, но сложнее для восприятия:
return bool(1 & n)


2️⃣ Проверка, пуста ли строка

Простой способ:
if len(my_string) == 0:


Быстрее, но менее интуитивно:
if not my_string:


3️⃣ Проверка на наличие элемента в списке

Простой способ:
if element in my_list:


Быстрее, но менее понятно:
try:
my_list.index(element)
except ValueError:
pass


💭 Когда стоит жертвовать читаемостью ради эффективности? Поделитесь своими примерами и мыслями в комментариях!

Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155🔥4
⚙️ Фишка инструмента: Pyre — типизация, которая летает

Pyre— статический анализатор типов, способный проверять миллионы строк кода за секунды. Работает инкрементально и в режиме демона, поддерживает PEP 484 и отлично вписывается в большие проекты.

🔎 Установка и настройка проекта

➡️ macOS:
brew install python3 watchman


➡️ Ubuntu/Debian:
sudo apt-get install python3 python3-pip python3-venv
sudo apt install watchman


➡️ Настройка проекта:
mkdir my_project && cd my_project
python3 -m venv ~/.venvs/venv
source ~/.venvs/venv/bin/activate
pip install pyre-check
pyre init


Инициализация создаст конфигурационные файлы .pyre_configuration и .watchmanconfig.

➡️ Пример запуска:
echo "i: int = 'string'" > test.py
pyre


➡️ Результат:
Found 1 type error!
test.py:1:0 Incompatible variable type [9]: i is declared to have type `int` but is used as type
а: Pyre

Pyre особенно эффективен в крупных кодовых базах и может использоваться в автоматических пайплайнах CI/CD. Он значительно упрощает внедрение строгой типизации и стандартов качества кода в Python-проектах.

🔗 Ссылка на репозиторий: https://clc.to/F4Gx4A

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104❤‍🔥2
Зачем дата-сайентисту дисперсия

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

👉 Оценке и интерпретации результатов моделей
👉 Понимании поведения алгоритмов машинного обучения
👉 Снижении ошибок при построении предсказаний

В этой статье разберём, как правильно использовать дисперсию в Data Science и как она влияет на работу алгоритмов, например, в модели Random Forest.

👉 Читайте, чтобы понять, как измерять и учитывать дисперсию: https://proglib.io/sh/GDKYJQdAI2

Библиотека дата-сайентиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥2👍1
Самые догадливые, пишите ответ в комментах 👇

Небольшая подсказка — это термин относится к Python.

Прячем ответы под спойлер, чтобы не спалить остальным.

Библиотека питониста #междусобойчик
5🤔3👍1🌚1👾1
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»

Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!

🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
👍137
📱 Python новости

🚀 Релизы и инструменты:
Шесть релизов Python за один день — весна 2025-го врывается с размахом
TARIFF — «величайший» Python-пакет

🧠 Профессия и карьера:
Python остаётся топ-навыком для AI-вакансий — по данным AI Index 2025

🧪 Разработка и производительность:
Примитивный компилятор на Python — учебный проект с нуля
CPU-кеш и Python — может ли кеширование ускорить ваш код

🌐 Django и веб:
F(), Func() и никаких циклов — как Django пишет SQL под капотом
Django Simple Deploy + DevOps — обсуждаем в подкасте
Go vs Python для веб-скрейпинга — сравнение инструментов

🎥 Видео:
Data Engineering + AI/LLMs — видео-урок по загрузке данных

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1
🔥 Завтра запускаем ML-ракету: последние места на борту

Уже завтра, 21 апреля, состоится наш воркшоп «Математика машинного обучения на практике», где теория ML превращается в практические навыки.

Что вас ждет:
📍 Работа с реальными данными — табличные датасеты и изображения
📍 Снижение размерности через PCA — научитесь отделять важное от второстепенного
📍 Обучение моделей — Random Forest и градиентный бустинг в действии
📍 Разбор метрик и гиперпараметров — как настроить модель на максимальную эффективность
📍 Написание кода на Python — прямо как реальных проектах
📍 Персональный code review от эксперта — бесценный фидбек для вашего роста
📍 Доступ в закрытый чат участников — нетворкинг и обмен опытом

Кто проводит воркшоп:

Мария Горденко — инженер-программист, старший преподаватель НИУ ВШЭ и Proglib Academy, руководитель магистратуры от ГК Самолет и Альфа-Банка.

Стоимость участия: 3990₽
Когда: завтра, 21 апреля

👉 Забронировать место на воркшопе: https://proglib.io/w/6f0e5775
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
🎉 T-строки официально в Python 3.14

В конце 2025 года нас ждёт мощное пополнение — в Python появятся template strings (t-strings). Это новая форма строк, которая решает старые проблемы f-строк и открывает дверь к более безопасной и гибкой работе с текстом.

🎌 Что такое t-строки

С f-строками (f"...") мы живём с 2016 года — они удобные, но иногда… опасные. Например:
f"SELECT * FROM users WHERE name = '{user_name}'"


🔎 Такой код легко подставляет вредоносный ввод — и привет, SQL-инъекция или XSS.

Теперь появляется альтернатива: t-строки. Они выглядят похоже:
from string.templatelib import Template
template = t"Hello {name}!"


🔎 Но — они не превращаются сразу в строку, а становятся объектом Template. Их нужно явно обработать, и это даёт пространство для экранирования, валидации и любых безопасных преобразований.

🎌 Безопасный HTML

Пример: экранирование HTML-ввода
evil = "<script>alert('bad')</script>"
template = t"<p>{evil}</p>"
safe = html(template)
assert safe == "<p>&lt;script&gt;alert('bad')&lt;/script&gt;</p>"


🔎 Больше никакой грязи в шаблоне. А ещё html() может возвращать полноценный HTMLElement, а не просто строку. Всё гибко.

🎌 Как работать с t-strings

Шаблон предоставляет доступ к строкам и значениям до их объединения. Свойства .strings и .values возвращают кортежи:
name = "World"
template = t"Hello {name}!"
assert template.strings == ("Hello ", "!")
assert template.values == (name,)


Всегда будет на одну строку больше, чем значений. Например:
t"".strings == ("",)
t"{name}".strings == ("", "")


Можно просто пройтись по шаблону в цикле:
template = t"Hello {name}!"
contents = list(template)
assert contents[0] == "Hello "
assert contents[1].value == name
assert contents[2] == "!"


Для продвинутой обработки можно получить данные о каждой интерполяции:
template = t"Hello {name!s:>8}!"
interp = template.interpolations[0]
assert interp.value == name
assert interp.expression == "name"
assert interp.conversion == "s"
assert interp.format_spec == ">8"


Можно создать шаблон напрямую:
from string.templatelib import Template, Interpolation
template = Template(
"Hello ",
Interpolation(value="World", expression="name"),
"!"
)


T-строки — это:
✔️ Безопасность для HTML, SQL и Markdown
✔️ Возможность сложной обработки шаблонов
✔️ Гибкость: можно возвращать любой тип, а не только строку

🔎 Очень хочется, чтобы форматтеры типа black и ruff поддержали t-строки, а VS Code начал подсвечивать их содержимое. Потому что t-strings — это не просто новая игрушка, а основа для более безопасного Python-кода.

Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍1052🎉2👏1👾1
⌨️ Топ-вакансий для питонистов за неделю

Senior Python Developer (Blockchain) — от 3500 до 4500 $, удалённо

Руководитель группы разработки Python — от 350 000 до 550 000 ₽, удалённо

Python developer (DDI) — от 250 000 ₽, гибрид (Москва)

Tech Lead Python — от 350 000 ₽, удалённо

Junior Python Developer — от 130 000 до 300 000 ₽, удалённо

➡️ Еще больше топовых вакансий — в нашем канале Python jobs

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
Async-инициализация в Python: какие есть подходы

В Python нет нативной поддержки асинхронного __init__, поэтому приходится искать обходные пути, если объект требует асинхронной инициализации (например, получения ресурса через await get_resource()).

⬇️ Вот какие стратегии чаще всего используют — с плюсами и минусами.

1️⃣ @classmethod async def initialize()
class Klass:
def __init__(self, resource):
self.resource = resource

@classmethod
async def initialize(cls):
resource = await get_resource()
return cls(resource)


🌥 Плюсы:
— Лаконично
— Хорошо отделяет sync и async логику
— Удобно для тестов

🌥 Минусы:
— Нет устоявшейся конвенции
— Может быть неочевидно для команды

🌥 Подходит для простых случаев без необходимости в очистке ресурсов.

2️⃣ Асинхронный контекстный менеджер (__aenter__ / __aexit__)
class Klass:
async def __aenter__(self):
self.resource = await get_resource()
return self

async def __aexit__(self, exc_type, exc, tb):
pass


🌥 Плюсы:
— Устоявшийся паттерн (async with)
— Удобно добавлять логику очистки в будущем

🌥 Минусы:
— Нужно писать async with при каждом использовании
— Не всегда удобно, если объект нужен за пределами контекста

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

3️⃣ Инициализация в фоне через create_task()
class Klass:
def __init__(self):
self.ready_event = asyncio.Event()
asyncio.create_task(self._load())

async def _load(self):
self.resource = await get_resource()
self.ready_event.set()

async def use(self):
await self.ready_event.wait()
await do_something_with(self.resource)


🌥 Плюсы:
— Можно запускать загрузку параллельно с другими задачами
— Подходит для высоконагруженных систем

🌥 Минусы:
— Сложнее в отладке
— Нужно явно проверять await ready_event.wait() — легко забыть
— Нет встроенного механизма очистки

🌥 Хорошо подходит для внутренних компонентов или фреймворков, где поведение контролируется централизованно.

4️⃣ Внешний async-фабричный метод / билдер

Просто выносим всю асинхронную инициализацию за пределы класса.

🌥 Плюсы:
— Чистый и легко тестируемый код
— Гибко масштабируется

🌥 Минусы:
— Логика разнесена по разным местам
— Использование может стать чуть более многословным

🌥 Идеально, если важна читаемость и разделение ответственности.

5️⃣ await instance.ready()

Гибридный подход: конструктор sync, а использование — с явной асинхронной инициализацией.
klass = Klass()
await klass.ready()


🌥 Позволяет разделить создание и инициализацию, сохраняя контроль над потоком.

6️⃣ Запрет обычного __init__, только async-конструктор
class Klass:
def __new__(cls, *args, **kwargs):
raise RuntimeError("Используйте `await Klass.create()`")

@classmethod
async def create(cls):
self = super().__new__(cls)
self.resource = await get_resource()
return self


🌥 Форсирует корректное использование через async-интерфейс.

▫️ Какой подход выбрать:
🤖 initialize() — простая async-инициализация без очистки
🤖 __aenter__/__aexit__ — нужна очистка или сложный жизненный цикл
🤖 create_task() + Event — нужно запускать инициализацию в фоне
🤖 Async factory — тестируемость, масштабируемость
🤖 .ready() — чистое разделение этапов
🤖 __new__ + async — строгий контроль над созданием

Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍65🥱3😁1
2025/07/14 21:41:07
Back to Top
HTML Embed Code: