Python Portal
58.6K subscribers
2.04K photos
183 videos
48 files
576 links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
В России теперь можно официально зарегать свои ИТ-скиллы

Минцифра запустила платформу, где любой желающий может пройти тест и получить сертификат — всё добровольно.
Результат ляжет в личный кабинет на Госуслугах и будет действовать целый год.

Уже можно подтвердить знания по Python, Java, SQL, Linux и другим технологиям.

Пройти можно тут: gosuslugi.ru/itskills 🧠

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
37👍12😁9💊7🤣3🔥1🤔1
Принёс полезное с Хабра — перевод обновленного учебника по Flask от Мигеля Гринберга

Глава 1: Привет, мир! (тык);
Глава 2: Шаблоны (тык);
Глава 3: Веб-формы (тык);
Глава 4: База данных (тык);
Глава 5: Логины пользователей (тык);
Глава 6: Страница профиля и аватары (тык);
Глава 7: Обработка ошибок (тык);
Глава 8: Подписчики (тык);
Глава 9: Разбивка на страницы (тык);
Глава 10: Поддержка электронной почты (тык);
Глава 11: Дизайн приложения (тык);
Глава 12: Дата и время (тык);
Глава 13: I18n и L10n (тык);
Глава 14: Ajax (тык);
Глава 15: Улучшенная структура приложения (тык);
Глава 16: Полнотекстовый поиск (тык);
Глава 17: Развертывание на Linux (тык);
Глава 18: Развертывание на Heroku (тык);
Глава 19: Развертывание на контейнерах Docker (тык);
Глава 20: Немного магии JavaScript (тык);
Глава 21: Уведомления пользователей (тык);
Глава 22: Фоновые задания (тык);
Глава 23: Интерфейсы прикладного программирования (API) (тык).


Налетайте ☕️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
41👍17🔥6💊1
Использование оператора match case

В Python 3.10 был введён оператор match case для сопоставления с образцом (pattern matching). Он предоставляет более питоничный способ обработки множества условий без использования традиционных конструкций if-else.

Выше представлен пример использования оператора match case для сопоставления дней недели с задачами. Например, case 'monday' срабатывает, если значение переменной day равно 'monday', и возвращает 'learn Python'.

Подход с match-case более читаемый по сравнению с традиционным if, особенно при работе с большим числом условий

Ставь лайк если это полезно для тебя 😈

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
75👍26🔥13🌚2🤔1
Media is too big
VIEW IN TELEGRAM
Создай своего первого AI-агента + MCP-сервер на Python

Вот всё, что тебе нужно, чтобы собрать своего первого AI-агента меньше чем за 20 минут.

О коде, который ты здесь увидишь:

> Используется Google ADK с Gemini Flash для запуска агента
> Агент подключается к MCP-серверу
> Он также использует два кастомных инструмента для выполнения задач
> Всё, что делает агент, можно отслеживать благодаря библиотеке Opik

Вот видео — можешь смотреть бесплатно.
А вот репозиторий на GitHub с кодом 💯

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
29👍16🔥4😁2
Нужно создать XML с помощью Python? Попробуй модуль xml. 🐍

Я предпочитаю использовать ElementTree, но в модуле xml есть и другие способы работы с XML

Функция create_xml(filename): создаёт XML-файл с заданным именем.

def create_xml(filename):


Затем создаём элементы:

root = xml.Element("Appointments")
appt = xml.Element("subAppointment")
root.append(appt)


> Appointments — корневой элемент
> subAppointment — дочерний элемент, добавляется к корню

Добавляем вложенный элемент:

begin = xml.SubElement(appt, "begin")
begin.text = "1181251680"


В subAppointment добавляется подэлемент <begin>, содержащий текст

Сериализация и запись в файл:

tree = xml.ElementTree(root)
with open(filename, "wb") as fh:
tree.write(fh)


> Создаётся дерево ElementTree из корня.
> Файл открывается в бинарном режиме записи (wb).
> XML записывается в файл

Запускаем из консоли:

if __name__ == "__main__":
create_xml("appt.xml")


Если скрипт запущен напрямую — вызывается функция create_xml с именем выходного файла "appt.xml"

В результате создаётся XML-файл:

<Appointments>
<subAppointment>
<begin>1181251680</begin>
</subAppointment>
</Appointments>


Готовый и читаемый XML-документ 😈

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
29👍13🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл классный инструмент для тех, кто работает с Pandas

Теперь можно автоматически профилировать DataFrame в Jupyter с помощью Pandas AutoProfiler

На выходе — распределение по колонкам, сводная статистика, данные по null-значениям, экспорт кода и т.д.

Всё работает автоматически — писать дополнительный код не нужно

Имба, влепи лайк если согласен ⚔️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
52👍17🔥8
Media is too big
VIEW IN TELEGRAM
Вот игра, с которой ты выучишь Python

Нет ничего лучше, чем писать код прямо внутри игры, чтобы понять, как работает программирование на практике.

CodeStrike — шутер + приключение + Python. Полностью бесплатно в Steam — но ограниченное время

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

Отличный способ учиться весело. Но, увы, мало кто знает. Наслаждайся ✌️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
55👍21🔥13🤯6😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Code review больше никогда не будет прежним

CodeRabbit добавил бесплатные AI-ревью кода прямо в VS Code, Cursor и Windsurf.

Этот инструмент находит баги и проверяет твой код на ошибки всего за несколько секунд. Подводит итоги и анализирует Pull Request из твоего репозитория на GitHub или GitLab

Всё что нужно это открыть панель расширений в VS Code, Cursor или Windsurf, введите "CodeRabbit" и нажмите Install 😈

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
28👍12🔥7🌭4
Удаление элементов из set в Python

В Python множества (set) поддерживают два метода удаления элементов: remove() и discard()

На изображении выше видно:

> s.remove(4) выбрасывает KeyError, если элемента нет

> s.discard(4) просто молчит и продолжает работу дальше

Оба метода удаляют элементы, но ведут себя по-разному при отсутствии значения.

remove() — строго, discard() — спокойно

Такой подход помогает гибко управлять логикой в зависимости от ситуации:

> нужно жёстко контролировать наличие элемента — используй remove()
> хочешь без лишних исключений — discard() в помощь

Ставь лайк, если разобрался 🚶‍♀️

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8720🔥8🌭3👀3
Python Portal
ty — новый сверхбыстрый type checker для Python от Astral Анонсирован ty — проверщик типов и языковой сервер, написанный на Rust. В тестах он в 10–100 раз быстрее аналогов (на реальных проектах — до 600x быстрее Mypy 😳) Цель —> сделать лучшую цепочку инструментов…
Диагностика ty становится всё лучше

Если ты ссылаешься на символ или модуль, который был добавлен в более новой версии Python, вам сообщат об этом, а также укажут, где и почему была выведена поддерживаемая версия Python 😎

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2013🔥1
Вот репозиторий по основам PyTorch

Нет ничего лучше, чем разобраться в нейросетях на практике — тензоры, градиенты, обучение, всё по шагам в Jupyter.

Идеально, если хочешь вкатиться в AI — ссылка

Отличный репозиторий, но, увы, недооценён. Сохраняй

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
37🔥16👍13
Вот бесплатный курс по изучению Python — 100-days-of-python

С практическими упражнениями и пошаговыми туториалами

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

Интерактивный курс, который тебе реально нужно заценить. Не благодари 😈

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43👍1210
Совет по Python на сегодня:

С помощью pathlib можно получить доступ к различным частям пути, таким как имя файла, расширение и родительский каталог. Это упрощает обработку и анализ файловых путей

> Имя файла с расширением:

>>> path.name
'test.md'


> Имя файла без расширения:

>>> path.stem
'test'


> Расширение файла:

>>> path.suffix
'.md'


> Родительский каталог:

>>> path.parent
PosixPath('C:/Users')


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4014🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Вот четвёртый трюк с GitHub вам в копилку: просто замени .com на chat.ai в URL любого репозитория — и ты сможешь напрямую общаться с кодом 😎

Это меняет правила игры для быстрого понимания и навигации по проекту

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍538💊2🔥1
Анатомия Python-класса

Почти всё, что может содержать определение класса в Python — в одной картинке.

Удобный визуал, чтобы быстро освежить синтаксис и структуру 💯

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍70🔥268👀6
This media is not supported in your browser
VIEW IN TELEGRAM
Отслеживайте и оценивайте любое приложение на базе AI/LLM в 3 строки кода

> Инициализируйте объект оценки с помощью LangWatch (строка 3)

> Декорируйте метод рабочего процесса LLM (строка 5)

> Запишите результат оценки (строка 11)

Можно продолжать использовать Pandas и другие любимые инструменты.

Вы можете интегрировать оценки LangWatch в CI/CD-пайплайны, чтобы каждая новая версия модели автоматически проверялась перед деплоем.

Полностью с открытым исходным кодом → https://github.com/langwatch/langwatch 😊

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍9
Совет по 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) автоматически создаёт пустой список при первом обращении 😈

С обычным dict:

department_groups = {}

for name, department in employees:
if department in department_groups:
department_groups[department].append(name)
else:
department_groups[department] = [name]


Нужно вручную проверять наличие ключа и инициализировать список 👀

defaultdict делает код чище, короче и безопаснее при работе с вложенными структурами

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍9🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Datacamp открыл бесплатный доступ ко всем своим курсам на неделю

Что можно изучить:

> Python, Spark, анализ данных, data engineering
> Машинное обучение, Power BI и многое другое
> Практические проекты
> Сертификаты, которые можно добавить в резюме

Всё бесплатно на протяжении недели через DataCamp 😡

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1210🔥3🤔1
Функция 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]


Обратите внимание, что функция filter использует критерий, заданный функцией lambda, чтобы отфильтровать чётные числа из списка numbers. filter возвращает итератор, поэтому мы используем функцию list(), чтобы извлечь чётные числа в виде списка.

Функция filter() — мощный инструмент для выбора элементов из итерируемых объектов на основе пользовательских условий. Ниже приведены другие способы использования функции filter() в коде:
Фильтрация строк по длине

Если у вас есть список строк, и вы хотите отфильтровать строки определённой длины, вы можете использовать функцию filter(). Предположим, вы хотите получить из списка только те строки, длина которых меньше 5 символов. Вот пример того, как это можно сделать:

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']


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4816🏆3🔥1
Структуры данных в 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:
# делаем что-то


TUPLES

> неизменяемы

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3418🌚6👀4🔥2💊2