19037
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
Faker: игрушечные данные
Библиотека позволяет сгенерировать dummy data: имена, адреса, lorem ipsum, даты и т.д. $ faker address968 Bahringer Garden Apt. 722Kristinaland, NJ 09890
Поддерживает работу в командной строке:faker [-h] [--version] [-o output] [-l {bg_BG,cs_CZ,...,zh_CN,zh_TW}] [-r REPEAT] [-s SEP] [-i {package.containing.custom_provider otherpkg.containing.custom_provider}] [fake] [fake argument [fake argument ...]]
Репозиторий на GutHub
#факты
Команда Мамбы тоже хочет вас поздравить с Днём Программиста!
Понимаем, что иногда проще найти документацию к какому-нибудь самописному фреймворку, чем свою вторую половинку. Приложение ребят поможет вашему проекту «Personal_Life_v1.01» выйти из статуса «beta».
Пусть поиск партнёра станет для вас таким же приятным и простым, как написание бота на Python, ведь Мамба дает промокод на 3 месяца VIP для новых участников: https://mamba.onelink.me/nlqB/ITHAPPY?erid=Kra243rjF
А ещё вы можете получить приятные подарки, если найдёте фирменные автомобили Мамбы около офисов крупных IT-компаний в Москве и решите, спрятанные там задачи!
Реклама АО "МАМБА" ИНН 7714548885
Почему Джанго?
Возможно, вы уже слышали, что Django назван в честь американского гитариста Джанго Рейнхардта. Один из соавторов фреймворка, Адриан Холоватый, вероятно, поспособствовал такому неймингу. Он обожает Рейнхардта и ведет YouTube-канал, посвящённый не только каверам на песни джазмена, но и трактует известные композиции по-новому.
Если вы тоже не знали, как называется жанр музыки из открывающей темы Спанчбоба, то добро пожаловать в мир джаз-мануша (цыганский джаз). На видео Адриан обыграл тему из «Братьев Марио».
#django
Продвинутая логика именования в Python
Разобрали на примерах, как и почему лучше называть различные объекты в Python. Там уже наметился небольшой спор, присоединяйтесь, если интересно. Будем рады вашим техникам именования.
Статья
#лучшиепрактики
Задача на сложение матриц
Уровень: новичок
Напишите функцию (без использования numpy.matrix.sum()), которая складывает две квадратные матрицы и возвращает их сумму. Все элементы матриц — целочисленные значения.matrixAddition( [ [1, 2, 3], [3, 2, 1], [1, 1, 1] ],// + [ [2, 2, 1], [3, 2, 3], [1, 1, 3] ] )// returns: [ [3, 4, 4], [6, 4, 4], [2, 2, 4] ]
#задача
Отложенная оценка аннотаций типов
PEP-563 представил отложенную оценку аннотаций типов. Это означает, что все ваши аннотации типов во время выполнения рассматриваются лишь как строки. Но это помешало работе pydantic и typeguard.
Однако если такое поведение вам все таки нужно, используйте annotations из модуля __future__:def class_decorator(cls): annotations = get_type_hints(cls) # raises NameError on 'C' print(f'Annotations for {cls}: {annotations}') return cls@class_decoratorclass C: singleton: 'C' = None
#факты
LookupError: родительский класс KeyError, IndexError
Основная цель этого промежуточного исключения — упростить отладку при возникновении любого из этих двух исключений:try: username = resp['posts'][-1]['authors'][0]['name']except LookupError: username = None
#лучшиепрактики
Сможете расшифровать фразу со стартаперского?
«Фаундеры показали MVP по время питча — похоже, придётся сделать пивот, потому что с фримиумом мы не сможем свести unit-экономику».
Если вы всё поняли, то поздравляем, вы разбираетесь в терминологии бизнеса. Возможно, вам пора открыть свое дело или выйти на новый уровень со своим рабочим проектом.
В этой статье автор поделился опытом создания и развития первых проектов: https://tprg.ru/i4UN
А если с переводом фразы возникли сложности, то вы пока что почитайте статью, а позже мы опубликуем объяснение.
Реклама Бексаев Николай Сергеевич ИНН 470308037337, erid:LjN8KF67Q
beautifulsoup4 vs. Scrapy
Лаконичное десятиминутное видео, с помощью которого можно сравнить парсинговые библиотеки на примере паука. Автор стягивает список банков в файл с помощью этих инструментов и сравнивает код обоих парсеров. Отличный способ зайти в парсинг. Бонусом можно потренироваться в написании xpath.
#bs4 #scrapy
Newsi: API для новостей
Инструмент полезен в трейдинге и позволяет автоматизировать подгрузку англоязычных мировых новостей. В дальнейшем на результаты запроса можно навесить показатели эмоциональной окраски и в зависимости от этого упростить принятие инвестиционного решения.
Документация
#API
Нужна ли вам Kafka?
В статье Selectel разобрались, чем Kafka отличается от традиционных СУБД типа MySQL, почему именно этот продукт в резюме так повышает целевой оффер и как настроить простейший проект.
#kafka
Машинное обучение прямо в PostgreSQL
PostgresML — это расширение, позволяющее создавать модели машинного обучения и выводить их результаты с помощью SQL-запросов.
Анализ тональности:SELECT pgml.transform( task => 'text-classification', inputs => ARRAY[ 'I love how amazingly simple ML has become!', 'I hate doing mundane and thankless tasks. ☹️' ]) AS positivity;
Репозиторий на GitHub
#postgresql
Задача о заменах хвостов
Уровень: средний
Список A состоит из четырех элементов, каждый из которых содержит ровно одно двоеточие (не в начале и не в конце). Длина подстрок до и после двоеточия является случайной:A = ["abc:123", "cde:456", "a:12345", "777:xyz"]
Ваша задача — преобразовать список таким образом, чтобы поменять местами подстроки после каждого двоеточия.
Результат:B = ["abc:456", "cde:123", "a:xyz", "777:12345"]
Напишите решение задачи в комментариях.
#задача
Упрощённый оператор if
Порой вместо множественных сравнений с использованием or:m = 3if m == 1 or m == 2 or m == 3 or m == 4: print("m равен 1 / 2 / 3 / 4")
Эффективнее использовать in:if m in [1, 2, 3, 4]: print("m входит в диапазон [1, 4]")
#лучшиепрактики
Субботний Win Share
Что хорошего получилось у вас в сфере Python и IT в целом за неделю?
Поделитесь в комментариях.
В коде затык? Сообщество Zen of Python поможет
Мы пробуем рубрику «Грокаем вопрос» для Python-новичков и не только. Напишите в комментариях, с какой задачей вам нужно справиться. Мы выберем несколько самых интересных вопросов и постараемся обеспечить вас несколькими версиями ответов, в том числе с помощью подписчиков.
Пожалуйста, следуйте стандартам постановки вопроса в стиле Stack Overflow. Мы надеемся на ваше чувство эмпатии и взаимовежливости.
#грокаем
Torrent-Search-Bot для магнитных ссылок на торренты
Готовый Telegram-бот для тех, кому лень включать VPN. Просто разверните его копию с помощью собственного токена от BotFather, и он будет слать в ответ magnet link.
Ссылка на репозиторий
#факты
Задачи с собеседований Amazon для Python-разработчиков
Составили подборку практических заданий собеседований в Amazon и других крупных IT-компаний для джунов и миддлов.
#карьера
В проекте avito.code вышел завершающий ролик о паттернах конкурентного программирования в Go
Бэкенд-инженер Виталий Лихачёв объяснил принципы работы вычислительных паттернов (Future / Promise и Lazy Evaluation), а также команд Tee Channel и Ring Buffer. Понимание этих терминов позволит оптимизировать код и эффективнее работать с потоками данных.
Смотреть выпуск: https://tprg.ru/1grx
Реклама ООО «Авито Тех» LjN8K34WA
Подборка головоломных логических задач с собеседований
Составили подборку из 10 логико-математических задач, которые задают на рабочих интервью в Microsoft, Google, Amazon, Yahoo и Infosys.
#карьера
Субботний Win Share
Что хорошего получилось у вас в сфере Python и IT в целом за неделю?
Поделитесь в комментариях.
pyvis: визуализация графов
Утилита позволяет создавать графы, настраивать размер нодов, их цвет и прочие характеристики: >>> from pyvis.network import Network>>> import networkx as nx>>> nx_graph = nx.cycle_graph(10)>>> nx_graph.nodes[1]['title'] = 'Number 1'>>> nx_graph.nodes[1]['group'] = 1>>> nx_graph.nodes[3]['title'] = 'I belong to a different group!'>>> nt.show('nx.html')
Репозиторий на GitHub
#факты
String Template: ещё один способ интерполировать
Класс Template модуля string позволяет использовать знак доллара для подстановки:from string import Templatet = Template('Привет, $channel!')t.substitute(dict(channel='@zen_of_python'))# 'Hello, @zen_of_python'
Доводилось ли вам использовать Template? Поделитесь в комментариях, в каких ситуациях он работает лучше f-строк.
Документация
#факты
1secmail: анонимная почта на Python
Автор видео описывает, как обратиться к API 1secmail.com на Python. В 13-минутном ролике вы узнаете:
— как создать ящик с нужным именем;
— как читать почту в командной строке;
— как настроить регулярную перепроверку ящика.
#api
Время предпринимать по-крупному
Создавайте свой стартап или развивайте уже существующий в онлайн-магистратуре МФТИ и Сколково «Технологическое Предпринимательство».
Кроме теоретических знаний и 1 000 часов практического опыта вы получите:
— экспертизу опытных менторов;
— поддержку других предпринимателей;
— выход на потенциальных инвесторов и партнеров.
Профиль может быть любым — от ИТ до биотехнологий и космоса.
А после завершения обучения вы получите готовый к инвестированию бизнес-проект.
Осталось только узнать все подробности на сайте ТехПреда.
Реклама МФТИ, ФИЗТЕХ ИНН 5008006211, erid:LjN8K46hT
Typing Self: интуитивно понятный способ аннотирования методов, возвращающих экземпляр своего класса
Ведёт себя так же, как TypeVar, но более краток и прост:
Допустим, мы создали метод get_scale(), который возвращает экземпляр того же класса Scale с помощью self:class Shape: def set_scale(self, scale: float): self.scale = scale return selfShape().set_scale(0.5) # => Экземпляр класса Shape
Один из способов обозначить тип возвращаемого значения — указать его как текущий класс Shape. Использование этого метода заставляет средство проверки типов выводить тип Shape, как и ожидалось:class Shape: def set_scale(self, scale: float) -> Shape: self.scale = scale return selfShape().set_scale(0.5) # => Shape ...
PEP-673
#pep
faulthandler: запись логов в файл
К примеру, для записи логов каждые 5 секунд к основной программе потребуется добавить следующий код:import faulthandlerfrom time import sleepfaulthandler.dump_traceback_later( timeout=2, repeat=True,)for i in range(5): print(f"iteration {i}") sleep(5)
Документация
#лучшиепрактики
Перенос GPT-проекта на Python
На связи админ канала. Из тех, кто прикручивал к GPT API собственный датасет, как вы решали эту задачу?
Нашел решение на JavaScript (БД Pinecone, коэффициент Отиаи, связка нескольких API на Pipedream), но теперь нужно переписать проект на Python. Fine-Tuning модели, то есть подгрузка по документации OpenAI, обходится значительно дороже, чем своя БД.
На каком фреймворке лучше развернуть аналогичный проект? Подскажите в комментариях.
#GPT
Модуль warnings для кастомных предупреждений
Встроенная утилита позволяет тонко настраивать всевозможные ворнинги под ваш код:def deprecation(message): warnings.warn(message, DeprecationWarning, stacklevel=2)
Документация
#факты
PlotAI для вёрстки графиков на Matplotlib
Возможно, вы уже знаете, что LLM-модели вроде GPT неплохо справляются с построением различных диаграмм. Теперь можно упростить создание графиков на Python с помощью PlotAI:
— пользователь предоставляет датафрейм;
— PlotAI создаёт промт для LLM, который содержит первые пять записей и запрашивает код Python;
— возвращенный код Python выполняется, и отображается график.
Ссылка на репозиторий GitHub
#dataviz