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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍9🔥7😁2😱2
Forwarded from Machinelearning
This media is not supported in your browser
VIEW IN TELEGRAM
NVIDIA показала, как ускорить его в 40 раз — без переписывания кода.
Команда NVIDIA провела эксперимент с 18 миллионами строк данных с фондовых рынков: они выполнили типичный анализ данных с помощью pandas на CPU, а затем тоже самое — на GPU, используя
cudf.pandas
.Для примеры были взяты:
🧊 В общей сложности ~18M строк
Результат впечатляет : удалось добиться**ускорения обработки данных в 20–40 раз
Код скрипта не менялся вообще — тот же pandas, но на GPU.
Это один из примеров, где ускорение достигается без переписывания логики кода.
@ai_machinelearning_big_data
#datasckience #ml #nvidia #gpu #pandas #python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24👍7🔥4
🐍 dlt — библиотека для загрузки данных на Python. Этот open-source инструмент упрощает работу с данными — от простых скриптов до сложных ETL-пайплайнов. Автоматически определяет структуру данных и адаптируется под разные источники и хранилища.
Проект удобен для быстрого прототипирования: можно начать в Colab-ноутбуке, а затем масштабировать до production-решения. Поддерживает инкрементальную загрузку и интеграцию с Airflow.
🤖 GitHub
@pythonl
Проект удобен для быстрого прототипирования: можно начать в Colab-ноутбуке, а затем масштабировать до production-решения. Поддерживает инкрементальную загрузку и интеграцию с Airflow.
🤖 GitHub
@pythonl
❤13👍3🔥2🤩1
Это может пригодиться для метапрограммирования, генерации моделей, 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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍5🔥4
24 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🧮 CVXPY — библиотека для решения задач выпуклой оптимизации, позволяющая формулировать математические модели в естественной форме, а не подстраиваться под ограниченный синтаксис солверов. С её помощью можно работать с задачами линейного и квадратичного программирования, геометрическими и квазивыпуклыми оптимизациями, не углубляясь в технические детали реализации алгоритмов.
Проект развивается как open-source-сообщество с 2013 года и поддерживает популярные солверы. Он также имеет удобный API: например, ограничения записываются почти как математические неравенства, а решение возвращает не только результат, но и значения двойственных переменных.
🤖 GitHub
@pythonl
Проект развивается как open-source-сообщество с 2013 года и поддерживает популярные солверы. Он также имеет удобный API: например, ограничения записываются почти как математические неравенства, а решение возвращает не только результат, но и значения двойственных переменных.
🤖 GitHub
@pythonl
❤7👍4🔥2
Как прокачаться до 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?»
Ребята из 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?»
❤3🔥2🤩2
This media is not supported in your browser
VIEW IN TELEGRAM
Если вы хотите отсортировать список объектов (например, словарей или кортежей) сразу по нескольким критериям — например, сначала по возрасту по возрастанию, а затем по имени по убыванию — не нужно писать громоздкие функции.
Используйте
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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍7❤5😢2
🐧 Pynguin — генератор юнит-тестов для Python. Инструмент автоматически создаёт тесты для Python-кода, экономя время разработчиков и при этом адаптирован под особенности динамической типизации Python.
Проект пока находится в стадии исследования и требует осторожности — он исполняет тестируемый код, поэтому разработчики рекомендуют использовать изолированные среды вроде Docker. Установка через
🤖 GitHub
@pythonl
Проект пока находится в стадии исследования и требует осторожности — он исполняет тестируемый код, поэтому разработчики рекомендуют использовать изолированные среды вроде Docker. Установка через
pip install pynguin,
минимальная конфигурация требует указания пути к проекту и модулям для тестирования. 🤖 GitHub
@pythonl
🔥11❤6👍4😢1🤩1
Хотите обрабатывать тексты в несколько кликов?
Освойте регулярные выражения в новом бесплатном курсе Академии Selectel.
Вы научитесь:
🔹 моментально извлекать данные из гигабайтов текста,
🔹 валидировать формы любой сложности,
🔹 работать с кириллицей без сломанных \b,
🔹 решать задачи с помощью lookarounds и именованных групп.
Курс будет полезен как новичкам, так и опытным специалистам, которые хотят прокачаться в работе со скриптами и редакторами.
Начните обучение прямо сейчас
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqxE8kx8
Освойте регулярные выражения в новом бесплатном курсе Академии Selectel.
Вы научитесь:
🔹 моментально извлекать данные из гигабайтов текста,
🔹 валидировать формы любой сложности,
🔹 работать с кириллицей без сломанных \b,
🔹 решать задачи с помощью lookarounds и именованных групп.
Курс будет полезен как новичкам, так и опытным специалистам, которые хотят прокачаться в работе со скриптами и редакторами.
Начните обучение прямо сейчас
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqxE8kx8
❤4
🐍 Python Gotcha: как правильно логировать необработанные исключения
В этой статье разбирают частую проблему: программа падает, но в логах — тишина. Необработанные исключения отправляются в stderr, а не в лог-файл, и вы не знаете, что пошло не так.
Пример кода:
📄 В логе:
❗ А сам ZeroDivisionError — только в консоли. Лог молчит.
✅ Решение — использовать sys.excepthook:
Теперь, если произойдёт ошибка, она попадёт в лог:
📌 Вывод:
— Необработанные исключения не попадут в лог, если явно не подключить sys.excepthook
— Это особенно важно в продакшене: лог покажет, где и почему всё сломалось
— Просто и надёжно
🔗 Подробнее
@pythonl
В этой статье разбирают частую проблему: программа падает, но в логах — тишина. Необработанные исключения отправляются в stderr, а не в лог-файл, и вы не знаете, что пошло не так.
Пример кода:
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.FileHandler("app.log")
handler.setFormatter(logging.Formatter("%(asctime)s %(name)s %(levelname)s %(message)s"))
logger.addHandler(handler)
def divide(a, b):
return a / b
def main():
logger.info("Start")
logger.info(divide(10, 0)) # ZeroDivisionError
logger.info("End")
if __name__ == "__main__":
main()
📄 В логе:
2025-07-24 12:00:00 __main__ INFO Start
❗ А сам ZeroDivisionError — только в консоли. Лог молчит.
✅ Решение — использовать sys.excepthook:
import sys
def handle_uncaught_exception(exc_type, exc_value, exc_traceback):
logger.critical("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_uncaught_exception
Теперь, если произойдёт ошибка, она попадёт в лог:
CRITICAL Uncaught exception
Traceback (most recent call last):
...
ZeroDivisionError: division by zero
📌 Вывод:
— Необработанные исключения не попадут в лог, если явно не подключить sys.excepthook
— Это особенно важно в продакшене: лог покажет, где и почему всё сломалось
— Просто и надёжно
🔗 Подробнее
@pythonl
❤10👍5🔥5
🐍 Продвинутый трюк в Python: свой `with` без классов
Хочешь выполнять код до и после блока
📌 До yield — код до with
📌 После yield — код после with
🔥 Это мощный способ:
- логировать действия,
- временно менять окружение (stdout, переменные, режимы),
- управлять ресурсами, не создавая классы.
@pythonl
Хочешь выполнять код до и после блока
with
, но не писать громоздкий класс с __enter__
и __exit__
? Используй @contextmanager
из contextlib
:
from contextlib import contextmanager
import time
@contextmanager
def timer(label="Block"):
start = time.time()
print(f"[{label}] Start")
try:
yield
finally:
end = time.time()
print(f"[{label}] End — elapsed: {end - start:.3f}s")
# Пример использования
with timer("Download step"):
time.sleep(1.2)
📌 До yield — код до with
📌 После yield — код после with
🔥 Это мощный способ:
- логировать действия,
- временно менять окружение (stdout, переменные, режимы),
- управлять ресурсами, не создавая классы.
@pythonl
❤8🔥7👍4
📦 Гайд: “The Step-by-Step Guide to Python Packaging Tools 2025”
Python-инфраструктура сильно изменилась.
Выбор между
В этом гайде сравниваются 6 ключевых инструментов, каждый со своими сильными и слабыми сторонами:
1️⃣ uv — самый быстрый и универсальный (написан на Rust)
✅ До 100× быстрее pip
✅ Объединяет pip, virtualenv и pip-tools
✅ Поддержка PyPI-паблишинга и Python-менеджмента
📌 Выбор для CI/CD и monorepo-проектов
2️⃣ Poetry 2 — стандарт для библиотек и модульных приложений
✅ Поддержка semantic versioning, lock-файлов, плагинов
✅ Отлично подходит для open source
📌 Идеален для reproducible builds и PyPI
3️⃣ Hatch — “Cargo для Python”
✅ Поддержка матриц окружений, monorepo, хуков
✅ Интеграция с uv для скорости
📌 Выбор для сложных enterprise-проектов и тестовых фреймворков
4️⃣ PDM — стандартизированный менеджер без virtualenv
✅ Поддержка PEP 582 (__pypackages__), PEP 621
✅ Изоляция без виртуалок, удобен для прототипов
📌 Подходит для rapid dev и экспериментальных сборок
5️⃣ Pipenv — простой интерфейс для приложений
✅ Pipfile, auto-venv, чистый CLI
📌 Хорош для небольших проектов и начинающих
6️⃣ pip — классика
✅ Совместим везде, гибкий
❌ Нет lock-файлов, окружений, требует внешних тулов
📌 Решение для легаси-проектов или скриптов
💡 Выводы:
• uv — лучший выбор для скорости, CI и автоматизации
• Poetry — стандарт для библиотек, особенно с open source
• Hatch — для сложных проектов и продвинутых пайплайнов
• PDM — для быстрой разработки и современных стандартов
• Pipenv — простой, но морально устарел
• pip — базовый минимум, но требует ручной сборки обвязки
Если ты:
🔹 Собираешь ML‑пайплайн → смотри в сторону uv + Hatch
🔹 Работаешь над библиотекой → Poetry 2 будет логичным выбором
🔹 Строишь монорепу или сложный фреймворк → Hatch + workspace
🔹 Пишешь простые скрипты или MVP → подойдёт PDM или Pipenv
🔗 Полный гайд
@pythonl
Python-инфраструктура сильно изменилась.
Выбор между
pip
, poetry
, uv
, hatch
, pdm
и др. — это уже не просто "pip install", а стратегическое решение.В этом гайде сравниваются 6 ключевых инструментов, каждый со своими сильными и слабыми сторонами:
1️⃣ uv — самый быстрый и универсальный (написан на Rust)
✅ До 100× быстрее pip
✅ Объединяет pip, virtualenv и pip-tools
✅ Поддержка PyPI-паблишинга и Python-менеджмента
📌 Выбор для CI/CD и monorepo-проектов
2️⃣ Poetry 2 — стандарт для библиотек и модульных приложений
✅ Поддержка semantic versioning, lock-файлов, плагинов
✅ Отлично подходит для open source
📌 Идеален для reproducible builds и PyPI
3️⃣ Hatch — “Cargo для Python”
✅ Поддержка матриц окружений, monorepo, хуков
✅ Интеграция с uv для скорости
📌 Выбор для сложных enterprise-проектов и тестовых фреймворков
4️⃣ PDM — стандартизированный менеджер без virtualenv
✅ Поддержка PEP 582 (__pypackages__), PEP 621
✅ Изоляция без виртуалок, удобен для прототипов
📌 Подходит для rapid dev и экспериментальных сборок
5️⃣ Pipenv — простой интерфейс для приложений
✅ Pipfile, auto-venv, чистый CLI
📌 Хорош для небольших проектов и начинающих
6️⃣ pip — классика
✅ Совместим везде, гибкий
❌ Нет lock-файлов, окружений, требует внешних тулов
📌 Решение для легаси-проектов или скриптов
💡 Выводы:
• uv — лучший выбор для скорости, CI и автоматизации
• Poetry — стандарт для библиотек, особенно с open source
• Hatch — для сложных проектов и продвинутых пайплайнов
• PDM — для быстрой разработки и современных стандартов
• Pipenv — простой, но морально устарел
• pip — базовый минимум, но требует ручной сборки обвязки
Если ты:
🔹 Собираешь ML‑пайплайн → смотри в сторону uv + Hatch
🔹 Работаешь над библиотекой → Poetry 2 будет логичным выбором
🔹 Строишь монорепу или сложный фреймворк → Hatch + workspace
🔹 Пишешь простые скрипты или MVP → подойдёт PDM или Pipenv
🔗 Полный гайд
@pythonl
❤9🔥6👍4😢1
This media is not supported in your browser
VIEW IN TELEGRAM
🧹 ObjectClear — инструмент для удаления объектов с изображений с помощью ИИ
Что умеет:
🖼 Загружаешь изображение
🎯 Выделяешь объект, который хочешь убрать
✨ Модель автоматически удаляет его и восстанавливает фон
Под капотом:
— Segment Anything (SAM) от Meta для выделения объекта
— Inpaint-Anything для генерации фона
— Поддержка работы в браузере (Gradio UI)
Можно запускать локально. Всё open-source.
📎 GitHub: https://github.com/zjx0101/ObjectClear
@pythonl
Что умеет:
🖼 Загружаешь изображение
🎯 Выделяешь объект, который хочешь убрать
✨ Модель автоматически удаляет его и восстанавливает фон
Под капотом:
— Segment Anything (SAM) от Meta для выделения объекта
— Inpaint-Anything для генерации фона
— Поддержка работы в браузере (Gradio UI)
Можно запускать локально. Всё open-source.
📎 GitHub: https://github.com/zjx0101/ObjectClear
@pythonl
🔥11❤5👍5
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.me/ai_machinelearning_big_data
Python: t.me/python_job_interview
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://yangx.top/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://yangx.top/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🖥 Chatgpt для кода в тг: @Chatgpturbobot -
📕Ит-книги: https://yangx.top/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.me/ai_machinelearning_big_data
Python: t.me/python_job_interview
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: https://yangx.top/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: https://yangx.top/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://yangx.top/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
📕Ит-книги: https://yangx.top/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥1
🔥 Нашёл 100% open-source AI-агента для задач в разработке ПО!
ByteDance выпустили Trae Agent — LLM-агент для автоматизации задач в области программной инженерии.
✅ Планирование и использование инструментов из коробки
✅ Умеет рефакторить, дебажить, разбираться в коде
✅ Полностью автономный
✅ Абсолютно открытый код
Отличная база, если вы строите что-то с AI.
https://github.com/bytedance/trae-agent
@pythonl
ByteDance выпустили Trae Agent — LLM-агент для автоматизации задач в области программной инженерии.
✅ Планирование и использование инструментов из коробки
✅ Умеет рефакторить, дебажить, разбираться в коде
✅ Полностью автономный
✅ Абсолютно открытый код
Отличная база, если вы строите что-то с AI.
git clone https://github.com/bytedance/trae-agent.git
cd trae-agent
uv venv
uv sync --all-extras
https://github.com/bytedance/trae-agent
@pythonl
❤4🔥3👍2