Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Это оберег от новых задач между майскими. Вы знаете, кому его отправить.
Читать полностью…enum: где обладает преимуществом
Встроенный модуль enum
предоставляет удобный способ создания перечислений — наборов именованных констант, которые облегчают работу с фиксированными наборами значений. Это особенно полезно, когда необходимо ограничить возможные значения переменной определенным списком.
Рассмотрим функцию, которая получает температуру в заданном городе:
def get_temperature(city, unit):
...
unit
может быть либо "celsius"
, либо "fahrenheit"
. Однако использование строковых литералов может привести к ошибкам из-за опечаток или несогласованности в написании. Чтобы избежать этого, можно использовать перечисление:
from enum import Enum
class TempUnit(Enum):
CELSIUS = "celsius"
FAHRENHEIT = "fahrenheit"
get_temperature("Lisbon", TempUnit.CELSIUS)
auto
для автоматического присвоения значений:
from enum import Enum, auto
class Weekday(Enum):
MONDAY = auto()
TUESDAY = auto()
WEDNESDAY = auto()
enum
также предоставляет специализированные классы перечислений:int
, позволяющий использовать перечисления в арифметических операциях;Flag
;dict
, используемый при создании метаклассов перечислений.T-строки: что это и чем отличаются от f-строк?
T-строки (template strings), предложенные в PEP 750, — новый механизм безопасной интерполяции строк. В отличие от f-собрата, t-строка не создает обычный string, а возвращает объекты шаблонов, которые можно безопасно обрабатывать, не боясь вредоносных SQL-инъекций.
t-строки автоматически экранируют вставляемые значения, предотвращая инъекции команд или SQL. Они возвращают специальные объекты, которые можно передавать в функции, поддерживающие шаблоны, обеспечивая дополнительную безопасность.
PEP 787 дал возможность использовать такое в модулях subprocess и shlex, включая новую функцию sh() для безопасной сборки командной строки.
from shlex import sh
from subprocess import run
user_input = "some file.txt"
run(sh(t"cat {user_input}"))
Хотя t-строки обеспечивают безопасность, они требуют поддержки со стороны функций и библиотек. Например, попытка передать t-строку в функцию, ожидающую обычную строку, вызовет ошибку. Кроме того, интеграция t-строк в subprocess отложена до Python 3.15 из-за сложностей с кроссплатформенной реализацией.
#основы
@zen_of_python
Хочешь научиться собирать данные с сайтов как профи?
14 мая в 18:30 МСК — бесплатный вебинар по веб-скрейпингу на Python!
Что тебя ждёт:
На открытом уроке ты узнаешь, как:
— работать с библиотеками requests и BeautifulSoup;
— автоматизировать сбор данных с динамических сайтов с помощью Selenium;
— обходить CAPTCHA и блокировки;
— сохранять данные в нужном тебе формате.
Кому будет полезно:
Начинающим Python-разработчикам, аналитикам данных, маркетологам и всем, кто хочет научиться доставать нужную информацию из интернета.
Вебинар проходит в преддверии старта курса «Python Developer. Professional».
Участникам — скидка на обучение!
Регистрируйся прямо сейчас — не упусти шанс прокачаться в востребованном навыке
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
pdfrename | Массовое именование PDF-файлов
Если вы генерируете файлы.pdf скопом и нуждаетесь в их автоименовании, библиотека:
— распознает документ;
— подаст его ChatGPT (OpenAI API);
— сформирует осмысленный заголовок.
Цена: бесплатно, но за токены придется платить
Репозиторий проекта
#инструмент
@zen_of_python
Давно хотелось сделать такую RPG: Средневековый герой верхом на огромном волшебном питоне выполняет миссии и спасает людей от изнуряющей работы, потому что единственный из всех знает программирование...
Еще бы заодно воспроизвести всю цепочку открытий от электричества до современного hardware мог, а то ноутбук быстро сядет 🤓
#кек
@zen_of_python
1к 🙏 и у вас буду выходные без инцидентов
@ithumor
Это оберег от новых задач. Пускай рабочие чаты пополняются сообщениями, уведомления о них на майские сегодня можно заглушить.
❤️, если заглушил все рабочие уведомления
🎃, если вынужден гасить внезапные пожары на выходных
@zen_of_python
Пока весна цветёт в коммитах мая,
Твой Python-код без лишних точек с запятой.
С Первомаем, кодер, Поздравляю!
Пусть в выходные твой канбан несет покой.
@zen_of_python
League-Smile-Therapy | Как часто компьютерный игрок улыбается
Один любопытный реддитор создал приложение на Python + OpenCV, которое буквально смотрит, улыбаетесь ли вы во время игры в League of Legends. А что, там какие-то плюшки за позитивный настрой полагаются?
#кек
@zen_of_python
except* | Зачем нужна звездочка?
Когда мы работаем с asyncio, может случиться так, что несколько задач выбрасывают ошибки одновременно.
До Python 3.11 ловилась только первая ошибка. Остальные — либо игнорировались, либо приходилось мучиться с обработкой.
С Python 3.11 ввели ExceptionGroup. Это контейнер для нескольких исключений.
ExceptionGroup(
[ValueError("Ошибка 1"), TypeError("Ошибка 2")]
)
import asyncio
async def task1():
raise ValueError("Ошибка в task1")
async def task2():
raise TypeError("Ошибка в task2")
async def main():
try: # ловит ExceptionGroup
await asyncio.gather(task1(), task2()) # запускает обе задачи параллельно
except* ValueError as e: # перехватывает все ValueError из группы
for err in e.exceptions:
print(f"Перехвачено ValueError: {err}")
except* TypeError as e: # перехватывает все TypeError
for err in e.exceptions:
print(f"Перехвачено TypeError: {err}")
asyncio.run(main())
'''
Вывод:
Перехвачено ValueError: Ошибка в task1
Перехвачено TypeError: Ошибка в task2
'''
Вопрос подписчика
Задает @Ilia_O_P:
«Есть у кого-нибудь пример метакласса, который запоминал бы изменения в объектах дочерних классов и мог их откатить, при запросе?»
NB! Пожалуйста, будьте взаимовежливы. Однажды и вам помогут в этой рубрике.
#обсуждение
@zen_of_python
copier | Ctrl + C, Ctrl + V для шаблонов проекта
Если вам тоже надоело настраивать проекты с нуля каждый раз, то этот инструмент как раз автоматизирует такую рутинную задачу. Принимает как локальные пути до темплейтов, так и ссылки GitHub.
❤️ — пускай у подписчиков аптайм будет 99,99%
🌚 — хочу, чтобы тот самый подходящий репозиторий с GitHub всегда был с фиксированными версиями зависимостей
Цена: бесплатно
Библиотека на PyPi
#инструмент
@zen_of_python
Когда вставил в код, написанный нейросетью, свой кусок:
Читать полностью…Майские праздники в этом году как генератор в Python — вроде начались, но сейчас только yield
, return
ещё не было.
#кек
@zen_of_python
AI уже собеседует людей. Вопрос — отсобеседует ли он тебя?
Совместная разработка T1 и Geeсko — бесплатный AI-тренажёр, который захочет попробовать любой IT-специалист. Это не просто интервью, а настоящий тренажёр, где ты проходишь AI-собеседование прямо с экрана: ИИ задаёт вопросы, оценивает ответы и даёт обратную связь. Без HR и без «мы вам перезвоним».
Что внутри:
— 5 точных вопросов по hard-скиллам
— голосовой формат диалога
— подробный разбор каждого ответа
— рекомендации, как усилить свои позиции
Тренажёр создан для IT-специалистов, которые хотят не просто найти работу, а понять себя в профессии и расти дальше.
Хватит гадать — пройди AI-интервью и узнай, где твои сильные и слабые стороны.
Это #партнёрский пост
robyn | Ваш API будет самым быстрым
Если правильно организовать эксперимент, то и на вершину рейтинга производительности взобраться несложно. Фреймворк предлагает беспрецедентную производительность вашего будущего API засчет рантайма на Rust.
Среди фичей все самое «вкусное»:
— Поддерживает как (а)синхронные функции;
— Самодокументирует ваш API;
— Позволяет создавать приложения с двусторонней связью (WebSocket);
— Интегрируется напрямую с кодом на Rust;
— Автоматически перезагружает сервер при изменении файлов (Hot Reload);
Цена: бесплатно
Репозиторий проекта
#инструмент
@zen_of_python
Поисковая строка с ИИ на Django-сайте
Небанальная англоязычная статья-лонгрид о прикрутке Rust-библиотеки Mellisearch для неточного поиска на вашем питоническом сайте. Помимо скорости обещают еще и допуск опечаток, поддержку русского языка и другие киллер-фичи.
#инструмент
@zen_of_python
pydoll | Веб-автоматизация без веб-драйверов
Питоническое решение извечного вопроса скрейпинга, избавляющее разработчика от боли подбора нужной версии ChromeDriver. Обещано также бесшовное прохождение «турникета» Cloudflare и reCAPTCHA v3*.
Цена: бесплатно
Репозиторий проекта
pyfonts | Любой шрифт Google Fonts в Matplotlib
Если вы тоже выступаете за «дизайнеризацию» ноутбуков и в целом хотите унифицировать графики и текст вокруг них, этот тул позволит подключить любое из 1800+ начертаний за пару строк кода.
Цена: бесплатно
Репозиторий проекта
#инструмент
@zen_of_python
Вежливость города нейросети берет.
Восстание машин ему точно не страшно.
Редакция Tproger желает питонистам хорошенько почиллить на этих майских праздниках. Также помянем коллег из поддержки 24 / 7 (оставим им хотя бы цифровой шашлык):
©-🐍-🤓-😂-🐍-🕸-🔖->
| |
| |
|🔥 🔥 🔥🔥🔥🔥 🔥|
@zen_of_python
PEP 770 принят: «Улучшая измеримость пакетов ...»
11 апреля принята к разработке стандартизированный метод SBOM (англ. Software Bill-of-Materials). Этот документ будет располагаться в .dist-info/sboms и:
решать проблему «фантомных зависимостей». Многие зависимости содержат встроенные компоненты на других языках (например, C, C++, Rust), которые не отражаются в стандартных метаданных. Это затрудняет анализ состава программного обеспечения и может привести к пропущенным уязвимостям.
Предложение не ограничивается одним форматом SBOM. В зависимости от потребностей разработчиков предлагают две альтернативы.
#факт
@zen_of_python
H3LLO․CLOUD вконец упоролись и дают две вируталки на год БЕСПЛАТНО
• Две виртуалки с 2 ядрами.
• 4 Гб оперативки DDR5.
• 50 Гб объектного хранилища.
• 40 Гб сетевого диска.
• Белый статический IP (конечно, v4).
• И даже балансировщик нагрузки!
Это первое подобное предложение на российском рынке.
Они просто знают, что стоит вам попробовать настоящее облако с двумя машинами — и вас будет ломать возвращаться к убогим хостингам.
Две машины — это уже отказоустойчивая система. Можно запустить реальный проект: блог на 10к+ посещений, небольшой магазин или корпоративный сайт. И всё это без покупки железа и головной боли с настройкой.
Базы данных тоже включены, так что можно забыть о мучениях с Postgres, Mongo и прочим добром.
Когда вы почувствуете, как легко и приятно с этим всем работать, — всё, приехали, вы не сможете от этого отказаться.
А ещё скоро H3LLO․CLOUD добавят бесплатный Kubernetes — 3 месяца простенького кластера и месяц полноценного.
Единственное условие: чтобы получить все плюшки, включая белый IP, нужно пополнить счёт на 5000 ₽. Это не плата, это защита от криптомайнеров и торрент-раздавальщиков. Деньги останутся на вашем счету.
«А что если я создам 100 аккаунтов и буду пользоваться бесплатно вечно?» Ну, попробуйте. У H3LLO․CLOUD есть специальный человек Серёжа, который каждое утро приходит, пьёт кофе и ищет таких умников. А ещё у H3LLO․CLOUD есть нейросеть, но про неё Серёже не говорят — пусть думает, что незаменим.
Короче, заходите, тестируйте, ломайте. H3LLO․CLOUD готовы!
А чтобы первыми узнать о подобных предложениях — подписывайтесь на канал! Это тоже бесплатно.
Реклама. Рекламодатель: ООО «ХЕЛОУ», ИНН 9704228431, erid:2W5zFHCRnw2
zev | Помнит CLI-команды за вас
Утилита на базе OpenAI, которая поймет ваш запрос «на простом человеческом» и в ответ вернет команду, с учетом операционки, естественно. Создатели рекомендуют ollama, так тул вообще станет условно бесплатным.
Цена: бесплатно
Репозиторий проекта
#инструмент
@zen_of_python
Еще бы, ведь спустя столько лет наконец появились время и навык для того самого пет-проекта
#кек
@zen_of_python
Ну или по классике — закоммитил .env
#кек
@zen_of_python