pythonl | Unsorted

Telegram-канал pythonl - Python/ django

52808

по всем вопросам @haarrp @itchannels_telegram - 🔥 best it channels @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books

Subscribe to a channel

Python/ django

🐧 Pynguin — генератор юнит-тестов для Python. Инструмент автоматически создаёт тесты для Python-кода, экономя время разработчиков и при этом адаптирован под особенности динамической типизации Python.

Проект пока находится в стадии исследования и требует осторожности — он исполняет тестируемый код, поэтому разработчики рекомендуют использовать изолированные среды вроде Docker. Установка через pip install pynguin, минимальная конфигурация требует указания пути к проекту и модулям для тестирования.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

Как прокачаться до Python Middle+/Senior разработчика и получить новую работу в 2025?

Ребята из Interview Hustlers в четверг проводят воркшоп о том, как junior и middle-разработчикам быстрее вырасти до уровня крепкого Senior, овладеть hard skills, востребованными в продуктовых компаниях и BigTech, и получить новую работу на сложном рынке в 2025 году, где AI уже наступает на пятки.

🗓 24 июля 19:00 по МСК

Программа:
▪️ Какие hard skills качать, чтобы устроиться на Middle+/Senior разработчика в BigTech?
▪️ Как эффективно собеседоваться на тяжелом рынке летом 2025? Как выбивать максимальные офферы в РФ и заграницей?
▪️ Как вырасти технически на текущем месте работы и получить повышение в компании?

Спикеры:
▪️Максим Аверин — Senior Python Dev, основатель школы Interview Hustlers, 8 лет опыта
▪️Сергей Соловьев — Python Tech Lead в Кипрском финтехе, 10+ лет опыта

Регистрируйся на бесплатный воркшоп по ссылке.

📎 После регистрации на воркшоп ты получишь 2 бонуса: «Как разобрать неудачное собеседование без фидбека за 3 шага с AI?» и видео-урок «System Design интервью: Как спроектировать highload-маркетплейс с 0?»

Читать полностью…

Python/ django

🔍Тестовое собеседование на Python-бекендера с разработчиком из Avito в четверг

24 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

Как это будет:
📂 Даня, разработчик из Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot

Реклама.
О рекламодателе

Читать полностью…

Python/ django

🐍 dlt — библиотека для загрузки данных на Python. Этот open-source инструмент упрощает работу с данными — от простых скриптов до сложных ETL-пайплайнов. Автоматически определяет структуру данных и адаптируется под разные источники и хранилища.

Проект удобен для быстрого прототипирования: можно начать в Colab-ноутбуке, а затем масштабировать до production-решения. Поддерживает инкрементальную загрузку и интеграцию с Airflow.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

🖥 Что выведет код ниже?


def append_to_list(val, my_list=[]):
my_list.append(val)
return my_list

print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))


🤯 Подвох
Многие думают, что каждый вызов append_to_list() создаёт новый список, и ожидают вывод:


[1]
[2]
[3]

Но на самом деле Python выведет:


[1]
[1, 2]
[1, 2, 3]

🧠 Почему так происходит?
В Python значения аргументов по умолчанию вычисляются один раз — при определении функции, а не при каждом вызове.

Значение my_list=[] создаётся один раз и сохраняется между вызовами. Это работает как статическая переменная внутри функции.

✅ Как это исправить?
Используй None как значение по умолчанию:


def append_to_list(val, my_list=None):
if my_list is None:
my_list = []
my_list.append(val)
return my_list

print(append_to_list(1)) # [1]
print(append_to_list(2)) # [2]
print(append_to_list(3)) # [3]

💡 Вывод
Не используйте изменяемые объекты (например, list, dict, set) как значения по умолчанию для аргументов функций в Python.


@pythonl

Читать полностью…

Python/ django

📘 Потерянная глава Automate the Boring Stuff

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

🎧 Что внутри:
— Конвертация и обрезка видео с помощью moviepy
— Преобразование аудио в текст через SpeechRecognition
— Извлечение субтитров
— Автоматизация задач с файлами .mp3, .wav, .mp4 и .avi

🛠 Глава написана в привычном стиле — просто, на примерах, с пояснениями к коду. Идеально подойдёт для тех, кто хочет быстро научиться обрабатывать медиафайлы на Python без сложных фреймворков.

📎 Читать

@Pythonl

Читать полностью…

Python/ django

Как сказать рутине STOP?

Ускорьте рабочие процессы и освободите время для более интересных дел — с помощью курса Слёрма «Python для инженеров» 👈

Это обучение, заточенное на инженеров в нём нет ничего лишнего, только то, что необходимо именно вам.

На курсе вы научитесь:

🔹 писать эффективный и поддерживаемый код;
🔹 писать Kubernetes-операторы и модули для Ansible;
🔹 создавать, использовать и тестировать свои API;
🔹 взаимодействовать с инструментами CI/CD, CVS и DevOps системами.

Есть бесплатный демодоступ.

Старт 11 августа. Занять своё место на курсе — по ссылке.

Читать полностью…

Python/ django

🐍 Хитрый совет по Python: как ускорить in в 1000 раз

Когда ты проверяешь, есть ли элемент в списке, Python делает это медленно — он пробегает по списку полностью.
А если ты проверяешь элемент в множестве (set), это работает в сотни раз быстрее.

📌 Пример:


data = [1, 2, 3, ..., 1000000] # большой список
queries = [42, 9999, 123456]

# Медленно:
for q in queries:
if q in data:
print(q)


🔁 Каждый q in data проходит весь список → медленно.

✅ Правильный способ:

Преобразуй список в set один раз — и все станет быстро:


data_set = set(data)

for q in queries:
if q in data_set:
print(q)


💡 Проверка in в set работает мгновенно (как в словаре).
Такой трюк особенно полезен, если:

-у тебя много данных
-ты делаешь много проверок на вхождение

📌 Запомни: if x in список: — медленно
Лучше: if x in set(список): — быстро!

@pythonl

Читать полностью…

Python/ django

🐍 Микросервисные архитектуры — как ретраи влияют на отказоустойчивость микросервисов

Ретраи, или повторные запросы, — важный механизм обеспечения отказоустойчивости распределенных систем. Необходимо быть в курсе последних изменений и понимать, как ретраи эволюционировали в электронике, программировании и Java-экосистеме. Об этом подробно расскажет техлид Т-Банка Дмитрий Фролов на конференции JVM Day 30 августа в Москве. На лендинге заявлены спикеры из разных компаний, которые разберут темы по Java, Scala и Backend.

Мероприятие пройдет в штаб-квартире Т-Банка, а половину собранных средств организаторы хотят перечислить региональным техническим вузам, чтобы помочь с развитием ИТ-сферы и подготовкой квалифицированных специалистов в разных городах страны. После докладов гостей ждут настолки с лото, афтепати и нетворкинг. Чтобы принять участие в JVM Day необходимо заранее пройти регистрацию.

@pythonl

Читать полностью…

Python/ django

📊 OpenBB — это платформа для инвестиционных исследований, предоставляющая доступ к акциям, опционам, криптовалютам, форексу и макроэкономическим данным. Платформа ориентирована на пользователей всех уровней и включает в себя как командную строку, так и графический интерфейс. 🌟 OpenBB предлагает бесплатный и открытый доступ к аналитическим инструментам и может быть расширен через различные плагины. Проект также поддерживает автоматизацию процессов и интеграцию с внешними сервисами

🔥 Инструмент является бесплатным аналогом Bloomberg terminal (подписка на который стоит $20 тыс. в год!)

👩‍💻 Язык: Python

🔐 Лицензия: GNU

Github

@pythonl

Читать полностью…

Python/ django

📊 Python for Nonprofits — книга и код для анализа данных в НКО

Это полноценное учебное пособие по Python, заточенное под нужды некоммерческих организаций.

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

▪ Импорт и очистка данных (CSV, API, Google Sheets)
▪ Описательная статистика, линейные регрессии
▪ Визуализация: графики, интерактивные карты (Plotly, Folium)
▪ Dash-приложения и публикация дашбордов
▪ Всё оформлено как Jupyter-книга: можно читать, запускать, менять

Кому подойдёт:
– начинающим дата-аналитикам, которые хотят делать полезные проекты
– НКО, работающим с открытыми данными и отчётами
– преподавателям, ищущим учебный курс по Python с практикой

💡 Можно читать онлайн или скачать как книгу. Лицензия MIT — можно использовать где угодно.

📘 Подробнее и исходники: https://github.com/kburchfiel/pfn

@pythonl

Читать полностью…

Python/ django

🐍 Продвинутый Python‑совет дня

💡 Используй слоты (`__slots__`) для оптимизации классов, когда тебе нужно много однотипных объектов.

По умолчанию Python хранит атрибуты объектов в словаре (`__dict__`), что удобно, но неэффективно по памяти. Если ты точно знаешь, какие поля будут у объекта — зафиксируй их:


class Point:
slots = ("x", "y") # только эти атрибуты допустимы

def __init__(self, x, y):
self.x = x
self.y = y```


📈 Выгода:

- Уменьшает использование памяти до 30–50% для миллионов объектов
- Ускоряет доступ к полям (нет __dict__)
- Запрещает создание произвольных новых атрибутов (меньше багов)

🧠 Подходит:

- Для численных расчётов (вместо namedtuple)
- При генерации большого количества однотипных объектов
- В data-heavy структурах (например, парсеры, AST, графы и т.п.)

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

👉 Видео

Читать полностью…

Python/ django

🚀 Быстрый HTTP‑сервер на базе asyncio.Protocol

В этом гайде показано как создать минималистичный HTTP‑сервер на Python, используя низкоуровневый API asyncio.Protocol, что делает его быстрее и гибче, чем решения на основе asyncio.Streams или фреймворков типа FastAPI.

Основные пункты:

1. Сокет-обработчик (`ConnectionHandler`)
- Наследуется от asyncio.Protocol — реакции на события connection_made, data_received, connection_lost.
- Хранит буфер, транспорт и маппинг маршрутов.

2. Парсинг HTTP-запросов
- В data_received накапливаются байты.
- Запрос считается полным при обнаружении \r\n\r\n.
- Затем из заголовков извлекаются method, path, другие поля.

3. Маршрутизация через декоратор
- Класс HTTPServer собирает функции-обработчики для путей.
- Обработчик вызывает либо корутины, либо возвращает статический HTML.

4. Отправка ответа
- Используется asyncio.create_task внутри колбэка, чтобы запустить send_response — где формируется ответ с HTTP-кодом, заголовками и телом.
- После write() соединение закрывается.

5. Простой запуск сервера
- Через loop.create_server() создаётся экземпляр ConnectionHandler.
- serve_forever() запускает обработку соединений.

6. Высокая производительность
Сервер обрабатывает ~100 000 запросов за ~4.2 с при нагрузке 100 одновременных соединений, в то время как FastAPI справляется за ~32 с :contentReference[oaicite:1]{index=1}.

Зачем это полезно:

- Полный контроль над TCP-соединениями и буферами.
- Существенно выше скорость при простых HTTP-API.
- Отличная демонстрация возможностей, которые остаются скрытыми за высокоуровневыми фреймворками.

Поддержка сообщества:
На Reddit статья получила высокую оценку как "отличный материал по Asyncio Protocols"

https://jacobpadilla.com/articles/asyncio-protocols

@pythonl

Читать полностью…

Python/ django

🔥 Совет дня Python: быстро получить частоту элементов в списка

Когда нужно узнать, сколько раз каждый элемент встречается в списке — не пиши вручную циклы. Используй collections.Counter:


from collections import Counter

items = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
freq = Counter(items)

print(freq)
# 👉 Counter({'apple': 3, 'banana': 2, 'orange': 1})


📌 Удобно для:
— подсчёта слов
— анализа логов
— быстрой статистики по спискам



@pythonl

Читать полностью…

Python/ django

🐍 Часть2: ещё 20 полезных Python-однострочников для тех, кто пишет в прод

Первая часть зашла — вот ещё 20 трюков, которые реально экономят время и делают код лаконичнее и чище:

1. 📥 Считать все строки из файла, убрав перевод строки


lines = Path('file.txt').read_text().splitlines()


2. 🔐 Получить SHA256-хеш строки

hash = hashlib.sha256(b"your text").hexdigest()


3. 🧮 Конвертация списка чисел в строку

s = ','.join(map(str, numbers))


4. 🛑 Быстро остановить выполнение скрипта

raise SystemExit("Done")


5. 🧠 Распечатать размер объекта в памяти

print(sys.getsizeof(obj))


6. 🧬 Плоское разворачивание вложенных списков

flat = [i for sub in nested for i in sub]


7. 🔄 Инвертировать булеву маску NumPy

inv_mask = ~mask


8. 🧽 Удалить дубликаты из списка, сохранив порядок

seen = set(); uniq = [x for x in lst if not (x in seen or seen.add(x))]


9. 📦 Распаковка аргументов из словаря в функцию

result = func(**params)


10. 🔎 Получить словарь с топ-N частыми значениями

top_n = dict(Counter(lst).most_common(5))


11. 🪓 Ограничить длину строки с троеточием

s_trunc = s[:n] + '…' if len(s) > n else s


12. 🎛️ Массив из 0 и 1 случайной длины

binary = [random.randint(0, 1) for _ in range(n)]


13. 🗓️ Получить сегодняшнюю дату в формате ISO

today = date.today().isoformat()


14. 📁 Получить размер файла в мегабайтах

size_mb = os.path.getsize(path) / 1024**2


15. 🔀 Перемешать словарь (Python 3.7+ сохраняет порядок)

shuffled = dict(random.sample(d.items(), len(d)))


16. ⏳ Измерить время выполнения блока

with contextlib.redirect_stdout(io.StringIO()): exec('code')


17. 🧱 Разделить список на чанки по N

chunks = [lst[i:i+n] for i in range(0, len(lst), n)]


18. 🕵️ Проверить, работает ли хост (без ping)

ok = socket.create_connection((host, port), timeout=2)


19. 🛠️ Быстро заменить подстроку без re

s = s.replace('from', 'to', 1)


20. 🧪 Убедиться, что все элементы списка — числа

is_all_numbers = all(isinstance(x, (int, float)) for x in lst)


📌 Если нужна часть 3 — ставь лайк.

@pythonl

Читать полностью…

Python/ django

🖥 Полезный трюк в Python: как отсортировать список по нескольким условиям одновременно

Если вы хотите отсортировать список объектов (например, словарей или кортежей) сразу по нескольким критериям — например, сначала по возрасту по возрастанию, а затем по имени по убыванию — не нужно писать громоздкие функции.

Используйте sorted() с key, комбинируя несколько полей с нужной логикой сортировки. Вот как:


people = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 25},
{"name": "David", "age": 30},
]

# Сортировка: сначала по age (по возрастанию), затем по name (по убыванию)
sorted_people = sorted(people, key=lambda p: (p["age"], -ord(p["name"][0])))

for person in sorted_people:
print(person)


💡 Работает и с объектами, и с кортежами — главное, правильно составить key. Особенно полезно для фильтрации списков в табличных данных, при выводе результатов или генерации отчётов.

#python

Больше коротких уроков тут

@pythonl

Читать полностью…

Python/ django

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

Проект развивается как open-source-сообщество с 2013 года и поддерживает популярные солверы. Он также имеет удобный API: например, ограничения записываются почти как математические неравенства, а решение возвращает не только результат, но и значения двойственных переменных.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

🖥 Динамическое создание классов через type

Это может пригодиться для метапрограммирования, генерации моделей, DSL, автотестов и многого другого.


# Создаем класс динамически
MyDynamicClass = type(
'MyDynamicClass', # имя класса
(object,), # родительские классы
{'x': 42, 'hello': lambda self: f'Hello, x = {self.x}'} # атрибуты и методы
)

obj = MyDynamicClass()
print(obj.hello()) # Hello, x = 42


🔥 Что тут происходит?

type() в обычном использовании возвращает тип объекта.

Но если передать три аргумента, он создаёт новый класс.

Мы задали имя, базовые классы и словарь атрибутов.

💡 Это то, что делает Python "Pythonic" — классы это тоже объекты, и ты можешь создавать их на лету.

@pythonl

Читать полностью…

Python/ django

🐼 Pandas тормозит на больших данных?

NVIDIA показала, как ускорить его в 40 раз — без переписывания кода.

Команда NVIDIA провела эксперимент с 18 миллионами строк данных с фондовых рынков: они выполнили типичный анализ данных с помощью pandas на CPU, а затем тоже самое — на GPU, используя cudf.pandas.

Для примеры были взяты:
📉 Скользящие средние (50D и 200D)
📅 Недельная статистика закрытия рынков
🧊 В общей сложности ~18M строк

Результат впечатляет : удалось добиться**ускорения обработки данных в 20–40 раз

Код скрипта не менялся вообще — тот же pandas, но на GPU.

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

🟡 Потестить самому можно в Colab
🟡 Другие примеры с кодом — здесь

@ai_machinelearning_big_data


#datasckience #ml #nvidia #gpu #pandas #python

Читать полностью…

Python/ django

👩‍💻 MegaParse — высокопроизводительный парсер, который способен преобразовывать всевозможные типы документов (Word документы, PDF-файлы или даже презентации PowerPoint)!

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

🔐 Лицензия: Apache-2.0

🖥 Github

@pythonl

Читать полностью…

Python/ django

💡 STUMPY — библиотека для анализа временных рядов. Этот проект предлагает мощный инструмент для работы с временными последовательностями через вычисление matrix profile — специальной метрики, которая автоматически находит схожие паттерны в данных.

Инструмент поддерживает распределённые вычисления через Dask и GPU-ускорение через Numba. Технология особенно полезна для обнаружения аномалий, повторяющихся фрагментов и семантической сегментации. Библиотека одинаково хорошо работает как на небольших наборах данных, так и на временных рядах длиной в миллионы точек.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

🌀 Cirq — Python-фреймворк для работы с квантовыми схемами, разработанный командой Google Quantum AI. Этот проект предоставляет инструменты для создания параметризованных квантовых цепей, их трансформации и симуляции на различных бэкендах.

Инструмент имеет встроенную поддержку аппаратно-зависимых операций и интеграция с высокопроизводительными симуляторами вроде qsim. Позволяет описывать квантовые алгоритмы с учетом шумовых характеристик реальных процессоров.

🤖 GitHub

@pythonl

Читать полностью…

Python/ django

👍 Ozon Tech приглашает QA-инженеров

Новый набор на бесплатные курсы Route 256.

Неважно, на каком языке вы тестируете сейчас. Важно, что вы хотите прокачаться в автотестах на Python, и Route 256 — отличный шанс. 2 месяца в экспертном коммьюнити: работа над реальными задачами, интенсивная практика без лишней теории, поддержка крутых коллег.

Чтобы попасть, зарегистрируйтесь и пройдите отборочный контест 3 августа: https://s.ozon.ru/1Wt8Fhy

Читать полностью…

Python/ django

🛠️ AI + SQL = мгновенный доступ к данным в базе

На картинке — простой пример, как с помощью FastMCP и SQLAlchemy можно подключить инструмент к базе данных, который по человеческому запросу выводит список всех таблиц.

📦 Что происходит:
1. Человек пишет: *"Show me all tables in the ecommerce database"*
2. AI вызывает list_tables(), получает список через SQLAlchemy
3. Возвращается JSON и сгенерированный ответ на естественном языке

⚙️ Используемые технологии:
- FastMCP — для регистрации инструментов и взаимодействия с агентами
- @mcp.tool — декоратор, позволяющий превращать функции в доступные действия для ИИ
- inspect() из SQLAlchemy — безопасный способ получить метаданные БД

🧠 Это база для создания умных ботов-помощников, которые умеют работать с реальными базами данных и выдавать ответы, понятные человеку.

Интерфейс будущего уже здесь — не SQL-запрос, а обычный вопрос на английском.

@pythonl

Читать полностью…

Python/ django

🛠 Вышел новый генератор CAD‑моделей по чертежам — и он реально работает!

GenCAD умеет превращать чертежи в 3D‑модели и сразу генерирует параметрический CAD‑код. Для сложных и детализированных объектов он пока не подойдет, но с простыми деталями вроде винтиков и креплений справляется отлично.

📎 Идеально для быстрого прототипирования стандартных элементов.

📄 Статья: https://openreview.net/pdf?id=e817c1wEZ6
🔗 Сайт: https://gencad.github.io
💻 Код: https://github.com/ferdous-alam/GenCAD

@pythonl - погружение в Python

Читать полностью…

Python/ django

🖥 Полезный, но редко используемый приём: динамическое управление множеством контекст-менеджеров через `contextlib.ExitStack`

Если вам нужно открыть *N* файлов, захватить *M* блокировок или временно изменить кучу настроек, а их количество известно только во время выполнения, традиционный with … as …: не подойдёт. Вместо «пирамиды» вложенных with воспользуйтесь ExitStack:


from contextlib import ExitStack

filenames = ["a.log", "b.log", "c.log"]

with ExitStack() as stack:
files = [stack.enter_context(open(name)) for name in filenames]

# теперь у вас список открытых файлов, с которыми можно работать
for f in files:
print(f.readline())
# здесь ExitStack автоматически закроет все файлы, даже если их было 1000


Почему это круто

- Управляет произвольным числом контекстов: добавляете их в цикл, условно, через функции-фабрики.
- Гарантирует корректный rollback при исключениях: всё, что добавлено в ExitStack, будет закрыто в обратном порядке.
- Упрощает сложную инициализацию: можно динамически «подключать» то, что нужно именно сейчас (файлы, блокировки, сетевые соединения).

🔧 Где пригодится

- Пакетная обработка файлов и архивов.
- Тестовые стенды с кучей временных ресурсов.
- Плагины, которые могут регистрировать собственные контекст-менеджеры.

Теперь никакого «каскада из with» — один аккуратный ExitStack.

@pythonl

Читать полностью…

Python/ django

🐍 20 ещё более продвинутых однострочников на Python — часть 3

Если ты уже пишешь на Python профессионально, вот ещё приёмы, которые реально экономят строки и читаются на лету:

1. 🗃️ Группировка по ключу без pandas


groups = defaultdict(list); [groups[k].append(v) for k, v in data]


2. 🪄 Быстрое глубокое копирование объекта

copy = pickle.loads(pickle.dumps(obj, -1))


3. 📤 Отправка JSON через POST

r = requests.post(url, json=payload)


4. 📌 Проверка, что файл — это символическая ссылка

is_symlink = Path(p).is_symlink()


5. 🧩 Быстрое объединение нескольких словарей

merged = {**d1, **d2, **d3}


6. 🧪 Проверить, что список отсортирован

is_sorted = all(a <= b for a, b in zip(lst, lst[1:]))


7. 🔍 Найти все подстроки по регулярке

matches = re.findall(r'\d+', text)


8. 🌐 Извлечь домен из URL

domain = urlparse(url).netloc


9. 🧬 Преобразовать список строк в int

nums = list(map(int, str_list))


10. 📚 Считать CSV в список словарей

rows = list(csv.DictReader(open('file.csv')))


11. 🔄 Превратить int в побитовую строку

bits = f'{num:08b}'


12. 📤 Сохранить объект в JSON-файл

json.dump(obj, open('data.json', 'w'), indent=2)


13. 🧮 Убрать пустые строки из списка

lines = [l for l in lines if l.strip()]


14. 🧾 Распарсить query string в словарь

params = dict(parse_qsl('a=1&b=2'))


15. 🧰 Получить уникальные строки, сохранив порядок

seen = set(); uniq = [s for s in seq if not (s in seen or seen.add(s))]


16. 📈 Получить индекс максимального значения

idx = max(range(len(lst)), key=lst.__getitem__)


17. 🪛 Проверить, что список вложенный (2D)

is_nested = all(isinstance(i, list) for i in lst)


18. 🧱 Убрать все символы кроме букв и цифр

clean = re.sub(r'\W+', '', text)


19. ⌛ Ограничить время выполнения кода

signal.alarm(2); try: ... except: ...


20. 📦 Получить структуру всех полей dataclass

fields = [f.name for f in dataclasses.fields(MyClass)]

📌 Часть 1
📌 Часть 2

@pythonl

Читать полностью…

Python/ django

Что общего у Netflix, Google и Spotify

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

Познакомиться с этим универсальным языком можно на бесплатном курсе Нетологии. За 5 занятий вы не просто изучите теорию, а создадите 2 рабочих проекта.

Сначала напишете планировщик задач. Начнёте с кода, который запрашивает дату и описание задачи, добавите условные операторы и циклы, встроите в программу уникальную функцию с помощью готовых библиотек. После создадите телеграм-бота и перенесёте в него функционал планировщика — на выходе у вас будет полноценное приложение.

Помощь в практике и ответы на вопросы сможете получить в чате с экспертами и однокурсниками.

Записывайтесь

Реклама. ООО "Нетология". ИНН 7726464125 Erid 2VSb5xHtdRi

Читать полностью…

Python/ django

Inside ML: индустриальные секреты машинного обучения

Онлайн-магистратура «Искусственный интеллект» от Вышки запускает мини-курс, где разберём, как ML работает в индустрии: от Computer Vision и AutoML до LLM и мультиагентных систем.

Что вас ждёт:
— 5 вебинаров от практиков из Avito, Сбера, Ozon
— Кейсы: как выигрывают Kaggle AutoML Grand Prix, запускают CV-системы и внедряют LLM в бизнес
— Q&A с экспертами: можно спросить о задачах и карьерном треке в ML

Для кого:
— IT-специалистам, которые хотят перейти в ML или усилить свою экспертизу
— Тем, кто хочет понять, что востребовано сейчас на рынке
— Тем, кто планирует сделать шаг в сторону applied ML или сменить специализацию внутри IT

Когда: до 15 июля, 19:00 (по МСК)

🔗 Зарегистрироваться

Читать полностью…

Python/ django

⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода

Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через sys.modules.

Вот минимальный приём, который делает это прозрачно:


import sys
import types

# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"

# Подменяем импорт
sys.modules['external_service'] = fake

# Теперь даже import будет работать
import external_service
print(external_service.get_data()) # → "подмена работает"


@pythonl

Читать полностью…
Subscribe to a channel