Присоединяйтесь к нашему каналу и погрузитесь в мир для Python-разработчика Связь: @devmangx РКН: https://clck.ru/3GMMF6
Аналогично Unix-пайпам, в Python можно строить цепочки функций, переопределяя метод __or__
Это позволяет связывать операции так, что вывод одной функции становится входом для следующей → чисто, читаемо и удобно для композиции
Именно так LangChain реализует элегантные пайплайны вроде: chat_prompt | groq_model | output_parser
Пример:
class Pipe:
def __init__(self, func):
self.func = func
def __call__(self, x):
return self.func(x)
def __or__(self, other):
return self.__class__(lambda x: other(self(x)))
Pipe
— обёртка над функцией__or__
(|) позволяет комбинировать пайпами, как в Unix__call__
делает объект вызываемым, как обычную функциюdouble = Pipe(lambda x: x * 2)
square = Pipe(lambda x: x ** 2)
pipeline = double | square
print(pipeline(3)) # (3 * 2) ** 2 = 36
Конструкции в Python, использующие блок else
:
🔸Условный оператор if-else
🔸Цикл for-else
🔸Цикл while-else
🔸Блок try-except-else
На фото мы видим 4 примера:
1. проверяет условие. Если x < 5
— выполняется if
, иначе — else
2. Цикл ищет i == 10
. Не находит, break не срабатывает → выполняется else
> Блок else выполняется только если цикл не прерван через break
3. Цикл отрабатывает до конца, else
выполняется после завершения while
> else
не выполнится, если внутри цикла будет break
4. Пытается выполнить 10 / 2. Исключения нет — срабатывает else
> else
выполняется только если не было исключений в try
👉 @PythonPortal
Ищем новичков во фронтенд-разработке и вёрстке сайтов.
Хотим помочь тебе собрать сайт, как полноценный заказ даже если ты никогда не кодил.
А именно:
- Сверстать веб-сайт на HTML + CSS;
- Реализовать функционал на JavaScript;
- Пощупать фронтенд-фреймворк Angular;
- Подключить Backend и загрузить сайт на хостинг;
- Использовать ChatGPT и Giga, как профи.
+ Помощь куратора на каждом этапе.
Чтобы в итоге ты своими руками разработал качественный сайт, который не стыдно добавить в портфолио или продать.
Такой опыт можно получить на бесплатном практикуме за 7 дней.
👉 Приходи на бесплатное обучение и зови с собой друзей
Бонусом получишь гайд для поиска работы и заказов на фронтенд-разработку.
Если хочешь стать скилловым бэкенд-разработчиком, то пили как можно больше проектов.
В этом курсе их три: генератор блогов, клон Netflix и клон Spotify.
Прокачаешь бэкенд на практике с Python, Django и PostgreSQL 😄
👉 @PythonPortal
Совет по Python:
Используйте команду poetry show --tree --why [package]
, чтобы отследить, откуда берётся пакет.
Она быстро показывает:
> какие пакеты от него зависят
> почему пакет был установлен
На примере показано, как команда
poetry show --tree --why pydantic
pyproject.toml
или при разрешении конфликтов транзитивных зависимостей. 📝🚴♂️Не надо изобретать велосипед
Главная ошибка стартаперов — пытаться сделать идеальный продукт, годами его дорабатывать, но так и не выпустить.
В своём канале я запустил челлендж: 12 проектов за 12 месяцев.
1️⃣ Ищем идею под существующий спрос (не из головы!)
2️⃣ Разрабатываем продукт
3️⃣ Занимаемся бесплатным продвижением
4️⃣ Оптимизируем и масштабируем
Формула проста:
1 запуск = 1 функция = решение 1 проблемы
Три главных правила:
✔️ Только проверенный спрос — через поисковые запросы, а не догадки.
✔️ Быстрый запуск — никакого перфекционизма.
✔️ Только США и ЕС — там платят за удобство.
Также в канале разбираю:
— Кто и зачем будет платить за микро-продукт?
— Главная ошибка начинающих стартаперов
— Микро-продукт vs стартап
— Как бесплатно продвигать продукт
Короче, рассказываю в канале без купюр: что работает, а что нет, сколько приносит и как продвигаем. Всё, что обычно скрывают.
Вы можете выполнить uv add --script /path/to/script.py
, чтобы добавить встроенные зависимости в Python-скрипт. Если заголовок скрипта ещё не существует, uv сгенерирует его автоматически
Команда uv run http://script.py
выполнит скрипт со всеми необходимыми зависимостями.
Не нужно создавать виртуальное окружение, устанавливать пакеты и т.д. ☺️
👉 @PythonPortal
VK Weekend Offer: отправьте заявку, пройдите интервью и получите офер!
28–29 июня VK проведёт Weekend Offer для бэкендеров с опытом от трёх лет. Участников со знанием Java, Go, Python или C++ ждут технические собеседования, знакомство с продуктами и, если всё сложится, офер уже в конце выходных.
Ребята много лет создают облачные решения, системы рекомендаций и поисковые движки — всё с миллионами пользователей в проде — и сейчас ищут новых коллег. Поэтому оставляйте заявку до 25 июня, чтобы попасть в команду за выходные!
Подробности — на сайте.
12 мощных инструментов для ваших ИИ-агентов
Вот краткое описание функций каждого из них
1. FileReadTool
Этот инструмент мгновенно извлекает данные из локальной файловой системы.
2. FileWriterTool
Позволяет агенту создавать или перезаписывать любые файлы.
3. CodeInterpreterTool
Мощный инструмент для выполнения кода на Python 3 в защищённой, изолированной среде
4. ScrapeWebsiteTool
Инструмент, предназначенный для извлечения и чтения содержимого указанного веб-сайта.
5. SerperDevTool
Позволяет агенту выполнять поиск в Google.
6. DirectoryReadTool
Позволяет агенту получать список содержимого папок и метаданные. Полезно для реализации RAG на основе файловой системы.
7. FirecrawlSearchTool
Инструмент, предназначенный для поиска по веб-сайтам и преобразования их содержимого в чистый Markdown или структурированные данные, пригодные для обработки агентами или языковыми моделями (LLM).
8. BrowserbaseLoadTool
Browserbase — это платформа для разработчиков, предназначенная для надёжного запуска, управления и мониторинга безголовых браузеров.
Этот инструмент позволяет запускать сессии безголового Chrome, которыми может управлять агент.
9. PDFSearchTool
Семантический RAG (извлечение и генерация с подсказками) по PDF-документам.
10. GithubSearchTool
Предоставляет агентам доступ к GitHub и возможность выполнять RAG по исходному коду.
11. TXTSearchTool
Молниеносное встраивание и поиск по текстовым файлам.
12. L2SQLTool
Инструмент Text2SQL, преобразующий естественный язык в SQL-запросы для поиска по структурированным базам данных.
👉 @PythonPortal
Нашёл годный инструмент для анализа безопасности Python-кода
Это CLI-утилита, которая автоматически сканирует исходники на уязвимости
Анализирует:
– небезопасные импорты
– инъекции
– проблемы с сериализацией
– утечки секретов и т.д.
Подходит для CI/CD пайплайнов и ревью кода.
Интеграция простая, работает быстро —> bandit ❤️
👉 @PythonPortal
🌐 WAICORE — хостинг, за который не надо переживать
Устали от лагов, сложных панелей и переплат? Переходите на VPS с AMD Ryzen 9 — быстро, просто, без нервов.
💬 Почему клиенты выбирают нас:
— Цена начинается от 2€
— Скорость канала до 10 Гбит/с
— Поддержка 24/7 — отвечаем быстро и без шаблонов
☀Приятный бонус: Бесплатный VPN — расширение для браузера в подарок каждому нашему юзеру
VPN | Расширение для браузера
📍 Локации: Германия (Франкфурт), Москва, Нидерланды (уже скоро) — стабильный пинг, DDoS-защита.
🔥 Успейте сегодня
⤵ Выбрать сервер | 💬 Наш канал
У CISCO есть 2 курса по Python полностью БЕСПЛАТНО
На английском языке и разработаны для получения официальных сертификатов Python Institute.
Содержат практические проекты и много часов учебного контента: начать 😡
👉 @PythonPortal
Нашёл топчик для прокачки алгоритмов и структур данных
Курс "A First Course on Data Structures in Python" — интерактивная книга с кодом и объяснениями написанная Дональдом Р. Шихи, профессором компьютерных наук в North Carolina State University
> Всё на Python
> никакой воды
> Всё с примерами и тестами
> Отлично заходит после базового Python
Читаем и прокачиваем мозг бесплатно — тут 📖
👉 @PythonPortal
Структуры данных в Python
Это база, это знать надо 🧠
LIST
> создаются с помощью синтаксиса: myList = []
> имеют методы, такие как: .sort(), .append()
> состоят из упорядоченных групп элементов
> итерируются циклами
ELEMENTS
> находятся по индексам
> могут быть изменены через присваивание: myList[ind] = x
> могут быть типов: int, string, list, …
INDEXES
> используют синтаксис: myList[ind]
> вперёд: от 0 до length-1
> назад: от -1 до -length
> нужны для присваивания
LOOPS
> проходят по списку последовательно
> часто используют идиомы, например:
for elem in myList:
# делаем что-то
Datacamp открыл бесплатный доступ ко всем своим курсам на неделю
Что можно изучить:
> Python, Spark, анализ данных, data engineering
> Машинное обучение, Power BI и многое другое
> Практические проекты
> Сертификаты, которые можно добавить в резюме
Всё бесплатно на протяжении недели через DataCamp 😡
👉 @PythonPortal
Наткнулся на библиотеку art — делает ASCII-арт из текста за секунды.
Простая установка:
pip install art
from art import text2art
Art = text2art("art") # шрифт по умолчанию
print(Art)
# Пример вывода:
# _
# __ _ _ __ | |_
# / _` || '__|| __|
# | (_| || | | |_
# \__,_||_| \__|
Art_block = text2art("art", font='block', chr_ignore=True)
print(Art_block)
# Выведет крупный блок‑текст
Если хочешь вкатиться в ML, а не просто читать теорию, начинай с практики прямо в браузере.
В этом курсе всё: туториалы, Colab-ноутбуки и реальные примеры.
Будешь тренировать модели на Python с TensorFlow, визуализировать в TensorBoard и деплоить хоть в браузер, хоть на сервер.
Подходит и для новичков, и для тех, кто уже пробовал Keras или NumPy 😊
👉 @PythonPortal
Возможность Python, которую часто недооценивают -> операции над множествами
Вот пример, как можно удалять или обновлять теги, приводя старые и новые значения к множествам, а затем выполняя операции над множествами
Очистка и приведение к множествам:
existing = {t for tag in old_tags if (t := tag.strip())}
incoming = {t for tag in new_tags if (t := tag.strip())}
tag.strip(
) удаляет пробелы с начала и конца строки.t := tag.strip()
сохраняет очищенное значение в переменную t.if (t := tag.strip())
фильтрует пустые строки ("").updated = existing - incoming
print("Removed tags:", updated)
updated = existing | incoming
print("Added tags:", updated)
Основатель школы автотестировщиков QA.GURU проводит бесплатный интенсив «Из баг-репортов до первого автотеста на Python»
🔜 Во вторник, 24 июня, в 12:00 по МСК. Бесплатно.
Вы начинающий автоматизатор или ручной тестировщик? Займите место сейчас ▶
За несколько часов опытный инженер объяснит, как написать и запустить автотест 🤓
Что сделаете за занятие:
— Напишете свой автотест на Python с нуля.
— Настроите рабочую среду за 10 минут (и она реально будет работать).
— Разберётесь, когда использовать Selenium, Playwright или Selene.
— Запустите автотест с Pytest и без него.
И совсем немного о трендах QA:
— Зачем компаниям QA, которые умеют писать код.
— Python + автотесты как минимальный входной билет в индустрию.
— Нейросети: конкурент или ассистент?
Станислав Васенков, основатель школы — в прошлом — Head of QAA pflb.ru, автор allure-notifications, победитель хакатона от EPAM, спикер Heisenbug.
Занять место ▶
Реклама. Рекламодатель: ИП Васенков Станислав Олегович, ИНН 774335827403, erid: 2Vtzqw51r9U
Этот репозиторий на GitHub настоящая находка для каждого дата-сайентиста
DS Interactive Python — это репозиторий с интерактивными дашбордами для изучения статистики, моделей машинного обучения и других концепций Data Science.
Темы включают: PCA, бэггинг и бустинг, кластеризацию, нейронные сети и др.
Полностью open-source и бесплатен 😮
👉 @PythonPortal
Совет по Python:
Использование setdefault
Метод setdefault()
позволяет заменить 4 строки традиционного кода, избавляя от необходимости использовать условие if и ручную инициализацию.setdefault()
чётко передаёт намерение: «Если ключ отсутствует, установить для него пустой список. Затем добавить элемент в список». Это одновременно делает код короче и понятнее
Есть ли причины использовать это вместо collections.defaultdict? 🤔
setdefault
можно указывать разное значение по умолчанию при каждом вызове, тогда как у defaultdict
одно общее значение для всех отсутствующих ключей. Метод setdefault
также удобен тем, что не требует импорта =)ТОП‑7 расширений для прокачки VSCode, Cursor и Windsurf: 📝
① Console Ninja
Показывает вывод консоли прямо в редакторе
② Error Lens
Выводит ошибки линтера и компиляции прямо в строке кода
③ Image Preview
Показывает превью изображений при наведении курсора
④ REST Client
Позволяет делать HTTP‑запросы и получать ответы прямо в редакторе
⑤ Version Lens
Управление версиями и обновление зависимостей из package.json
и не только
⑥ Highlight on Copy
Мерцающая подсветка скопированного текста - видно, что именно ты скопировал
⑦ Symbols
Лучшая подборка иконок для типов файлов - делает интерфейс визуально чище
👉 @PythonPortal
Совет по чистому коду на Python:
Проверяйте качество кода внутри CI-пайплайна с помощью этих библиотек:
• flake8 — контроль соблюдения стиля (PEP8)
• black — автоформатирование кода
• isort — сортировка и оптимизация импортов
• bandit — анализ кода на уязвимости безопасности
• safety — проверка зависимостей на известные уязвимости
👉 @PythonPortal
🔍Тестовое собеседование на Python-бекендера с разработчиком из Avito во вторник
17 июня(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Даня, разработчик из Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvB1CC6
Это находка дня: Code2Tutorial
Он позволяет мгновенно превратить любой репозиторий на GitHub в чистый, интерактивный туториал.
Просто вставь ссылку на репо → получи структурированное обучение 😱
👉 @PythonPortal
Совет по Python:
В datetime.strptime()
используйте "%f
" для разбора микросекунд
from datetime import datetime
dt = datetime.strptime('2024-06-18 12:34:56.789123', '%Y-%m-%d %H:%M:%S.%f')
datetime.datetime(2024, 6, 18, 12, 34, 56, 789123)
Python включает очень полезную библиотеку difflib
. С её помощью можно находить наиболее похожие строки в списке строк.
Вот пример:
words = ["apple", "ape", "appeal", "par", "parade"]
difflib.get_close_matches("appel", words)
['appeal', 'apple', 'ape']
difflib.get_close_matches("pa", words)
['par']
difflib.get_close_matches("par", words)
['par', 'parade']
Изменение ключей словаря
Ключи словаря являются неизменяемыми. В Python не существует прямого способа изменить ключ словаря. Однако можно использовать метод pop()
для изменения или создания нового ключа со значением из существующего ключа.
Допустим, мы хотим заменить ключ "school"
на "university"
в приведённом ниже словаре. Первый шаг — использовать метод pop()
для удаления старого ключа и получения его значения. Второй шаг — создать новый ключ и присвоить ему значение удалённого ключа. Смотрите код ниже:
# Исходный словарь
my_dict = {'school': 'Yale', 'age': 22}
# Шаг 1: Удалить старый ключ и получить его значение
old_value = my_dict.pop('school')
# Шаг 2: Создать новый ключ с нужным именем и присвоить значение
my_dict['university'] = old_value
print(my_dict)
{'age': 22, 'university': 'Yale'}
Функция filter
Функция filter()
используется для фильтрации элементов из итерируемого объекта на основе заданного условия. Она принимает два аргумента: функцию и итерируемый объект. Возвращает итератор, содержащий элементы, которые удовлетворяют условию.
Предположим, у вас есть список чисел, и вы хотите отфильтровать из него только чётные числа. Вы можете использовать функцию filter:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
even_numbers
[2, 4, 6, 8]
lambda
, чтобы отфильтровать чётные числа из списка numbers
. filter возвращает итератор, поэтому мы используем функцию list()
, чтобы извлечь чётные числа в виде списка.words = ["apple", "banana", "kiwi", "grape"]
# Функция, передаваемая в filter
def filter_words(x):
return x if len(x) < 5 else None
short_words = list(filter(filter_words, words))
print(short_words)
['kiwi']
Совет по Python: используйте defaultdict
из модуля collections
, чтобы автоматически создавать значения для отсутствующих ключей. В отличие от обычного dict
, он не выбрасывает KeyError
Пример:
from collections import defaultdict
department_groups = defaultdict(list)
for name, department in employees:
department_groups[department].append(name)
defaultdict(list)
автоматически создаёт пустой список при первом обращении 😈department_groups = {}
for name, department in employees:
if department in department_groups:
department_groups[department].append(name)
else:
department_groups[department] = [name]
defaultdict
делает код чище, короче и безопаснее при работе с вложенными структурами