Почему в Python есть модуль antigravity?
Anonymous Quiz
28%
Это пасхалка на 20-летие языка
14%
Он был частью тестового движка для документации
28%
Это отсылка к веб-комиксу xkcd
30%
Это инструмент для визуализации графиков в стиле XKCD
❤1
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
👍6
🐍 Почему разработчики всё ещё выбирают Python: взгляд Гвидо ван Россума
GitHub рассказал Гвидо ван Россуму свежие данные Octoverse — и он был удивлён: несмотря на то, что TypeScript впервые обошёл Python по использованию, Python вырос на 49% за 2025 год.
Он остаётся главным языком для ИИ, науки и обучения, а также культурным феноменом, сформировавшим целое поколение разработчиков.
В интервью Гвидо рассказывает:
— почему читаемость всегда была основной философией языка;
— как Python превратился из хобби-проекта в основу современных ИИ-технологий;
— и что ждёт язык дальше — от ускорения до новых направлений развития.
🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
🔗 Ссылка на интервью
GitHub рассказал Гвидо ван Россуму свежие данные Octoverse — и он был удивлён: несмотря на то, что TypeScript впервые обошёл Python по использованию, Python вырос на 49% за 2025 год.
Он остаётся главным языком для ИИ, науки и обучения, а также культурным феноменом, сформировавшим целое поколение разработчиков.
В интервью Гвидо рассказывает:
— почему читаемость всегда была основной философией языка;
— как Python превратился из хобби-проекта в основу современных ИИ-технологий;
— и что ждёт язык дальше — от ускорения до новых направлений развития.
🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5🔥1
— Почему Python — не лучший язык для Data Science —автор рассказывает, где Python начинает проигрывать: многопоточность, скорость, экосистема для HPC. Много практических примеров и сравнение с Julia/Rust.
— Магия Python — подробное объяснение interning-а и механики хранения целых чисел в CPython. Отличный материал для подготовки к собесам.
— Компилируем Python так, чтобы он работал везде —гайд по сборке Python-приложений в единый бинарь и созданию truly portable окружений.
— Python 3.14 — полный список нововведений.
— FastAPI без хаоса: как перестать писать всё в main.py — хорошая практическая структура проекта: роутеры, конфигурация, DI, зависимости, разбиение на модули.
— 10 приёмов профи для ускорения Python-кода —от очевидных оптимизаций до продвинутых: буферизация, slots, NumPy-трюки, кэширование, генераторы, профилирование.
— Pydantic V2: dataclasses больше не нужны — выпуск V2 с архитектурой на Rust сделал Pydantic быстрее, безопаснее и более строгим.
— 9 принципов стабильных автотестов — советы по структуре, управлению состоянием, локализации багов, idempotent-тестам и CI-практикам.
— FlakyDetector — инструмент для охоты на нестабильные тесты — история создания утилиты, которая автоматически выявляет flaky-тесты в Python-проектах.
🤌 Бонусы для подписчиков:
— Скидка 40% на все курсы Академии
— Розыгрыш Apple MacBook
— Бесплатный тест на знание математики
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Forwarded from Библиотека задач по Data Science | тесты, код, задания
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Библиотека задач по Data Science | тесты, код, задания
Что выведет код?
Anonymous Quiz
14%
['2', '2', '5', '6']
46%
[2, 2, '5', '6']
10%
[2, 2, 5, 6]
30%
Error
❤2
📘 4 декабря стартует набор на курс «Математика для разработки AI-моделей»
Если вы работаете с моделями или хотите перейти в DS/ML, декабрь — идеальный момент закрыть фундаментальные пробелы.
На курсе вы разберёте ключевые разделы, которые лежат в основе современных AI-моделей: линейная алгебра, анализ, оптимизация, математический анализ, вероятности, статистика. Всё через практику в Python.
В программе живые занятия с экспертами AI-индустрии (SberAI, ВШЭ, WB&Russ), разбор реальных задач, квизы и финальный проект.
🌐 Формат: онлайн + доступ к записям
🎁 Бонусы: курс «Школьная математика» в подарок, бесплатный тест по математике
После лекций будет разбор ваших решений и возможность задать вопросы преподавателям.
👉 Записаться на курс
Если вы работаете с моделями или хотите перейти в DS/ML, декабрь — идеальный момент закрыть фундаментальные пробелы.
На курсе вы разберёте ключевые разделы, которые лежат в основе современных AI-моделей: линейная алгебра, анализ, оптимизация, математический анализ, вероятности, статистика. Всё через практику в Python.
В программе живые занятия с экспертами AI-индустрии (SberAI, ВШЭ, WB&Russ), разбор реальных задач, квизы и финальный проект.
🌐 Формат: онлайн + доступ к записям
🎁 Бонусы: курс «Школьная математика» в подарок, бесплатный тест по математике
После лекций будет разбор ваших решений и возможность задать вопросы преподавателям.
👉 Записаться на курс
Advent of Code (AoC) — это ежегодный адвент-календарь из небольших программных задач, которые можно решать на любом языке.
Для кого это
Для всех, кто любит программирование: новичков, студентов, разработчиков, команд. AoC используют как тренажёр, подготовку к собеседованиям, учебный курс или просто ежедневный челлендж.
Условия максимально простые:
— не нужен мощный компьютер,
— не нужен CS-бэкграунд,
— каждая задача решается за ≤15 секунд даже на старом железе.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🤩2
🔥 Pydantic уже не тот: теперь это мощный комбайн для конфигураций.
Когда-то это была всего лишь библиотека для валидации данных.
Сегодня — полноценная система загрузки и обработки настроек, которая умеет:
— читать .env (и несколько подряд),
— забирать значения из переменных окружения,
— парсить JSON/TOML/YAML,
— работать с секретами из Docker/AWS/GCP/Azure/Unix-файлов,
— и даже разбирать CLI-аргументы.
По сути, теперь одним классом Pydantic вы можете заменить dotenv/environs, argparse/click/typer, загрузку yaml/json/toml и большую часть валидации.
Пример:
Каскад загрузки работает так:
1. dotenv
2. переменные окружения
3. CLI
4. параметры, переданные вручную
И всё это автоматически валидируется, приводится к нужным типам, секреты скрываются, вложенные структуры корректно обрабатываются.
Пример запуска:
Результат:
CLI-режим поддерживает множество удобств: подкоманды, kebab-case, списки/JSON в аргументах, отрицательные флаги, алиасы, mutually-exclusive groups и даже интеграцию с argparse.
Если нужно — легко подключить собственные источники настроек и секретов (включая Hashicorp Vault).
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека питониста
#буст
Когда-то это была всего лишь библиотека для валидации данных.
Сегодня — полноценная система загрузки и обработки настроек, которая умеет:
— читать .env (и несколько подряд),
— забирать значения из переменных окружения,
— парсить JSON/TOML/YAML,
— работать с секретами из Docker/AWS/GCP/Azure/Unix-файлов,
— и даже разбирать CLI-аргументы.
По сути, теперь одним классом Pydantic вы можете заменить dotenv/environs, argparse/click/typer, загрузку yaml/json/toml и большую часть валидации.
Пример:
class Settings(BaseSettings):
service_url: HttpUrl
api_token: SecretStr
log_level: Literal['DEBUG','INFO','WARNING','ERROR'] = 'INFO'
port: conint(ge=1024, le=65535) = 8080
model_config = ConfigDict(
env_file=("/etc/.env", ".env"),
cli_parse_args=True
)
Каскад загрузки работает так:
1. dotenv
2. переменные окружения
3. CLI
4. параметры, переданные вручную
И всё это автоматически валидируется, приводится к нужным типам, секреты скрываются, вложенные структуры корректно обрабатываются.
Пример запуска:
export API_TOKEN="yeah_no"
python app.py --service_url https://bitecode.dev
Результат:
Service URL: https://bitecode.dev/
API Token: **********
Log Level: WARNING
Port: 8080
CLI-режим поддерживает множество удобств: подкоманды, kebab-case, списки/JSON в аргументах, отрицательные флаги, алиасы, mutually-exclusive groups и даже интеграцию с argparse.
Если нужно — легко подключить собственные источники настроек и секретов (включая Hashicorp Vault).
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤5🔥1🤩1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26🔥3👍1🥰1
😅 Мы нашли человека, который 2 года приручал Dependency Injection в Python
Разработчик два года (!) шлифовал ультра-простую библиотеку для Dependency Injection — python-injection.
Если вы когда-то страдали от того, где создать зависимость, как прожить её lifecycle и почему DI-фреймворки такие занудные — это может быть тем самым «наконец-то нормальным вариантом».
Что умеет:
⏩️ DI на базе type hints
⏩️ Декораторы для регистрации зависимостей
⏩️ 4 типа lifecycle
⏩️ Scoped зависимости через context manager
⏩️ Async support
⏩️ Профили (можете подменять имплементации)
⏩️ Ничего не создаётся заранее — только ленивый инстансинг
⏩️ И всё это без боли в душе и мозгах
Мы любим такие простые и полезные штуки — меньше шаблонного кода, больше фокуса на логике.
Если вы пишете на Python — взгляните:
➡️ GitHub
➡️ PyPI
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека питониста
#буст
Разработчик два года (!) шлифовал ультра-простую библиотеку для Dependency Injection — python-injection.
Если вы когда-то страдали от того, где создать зависимость, как прожить её lifecycle и почему DI-фреймворки такие занудные — это может быть тем самым «наконец-то нормальным вариантом».
Что умеет:
Мы любим такие простые и полезные штуки — меньше шаблонного кода, больше фокуса на логике.
Если вы пишете на Python — взгляните:
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5🔥4🥱1
Если вы когда-нибудь работали с последовательностями, вы почти наверняка сталкивались с ситуацией: нужно пройтись не по одному элементу, а по соседним. Для таких случаев в Python есть замечательная штука —
itertools.pairwise.Она берёт ваше
"ABCD" и превращает это в:("A", "B"), ("B", "C"), ("C", "D")Звучит просто — и это реально спасает в куче сценариев. Например, можно легко посчитать, как менялся банковский баланс:
from itertools import pairwise
balance_history = [700, 1000, 800, 750]
for before, after in pairwise(balance_history):
print(after - before)
Но фокус вот в чём…
Иногда пары — это мало. Хочется тройки, четвёрки, пятёрки… словом, окно произвольного размера.
Вот здесь
pairwise уже не поможет — поэтому мы собрали несколько аккуратных способов сделать «обобщённый pairwise», он же nwise().Простой, понятный и работает на всём, что итерируется:
from collections import deque
from itertools import islice
def nwise(iterable, n):
iterable = iter(iterable)
window = deque(islice(iterable, n - 1), maxlen=n)
for value in iterable:
window.append(value)
yield tuple(window)
Использование:
nwise("ABCD", 3)
→ ("A","B","C"), ("B","C","D")Такой «фокус с зеркалами»: создаём n независимых итераторов и сдвигаем каждый на свою позицию:
from itertools import islice, tee
def nwise(iterable, n):
iterators = tee(iter(iterable), n)
for idx, iterator in enumerate(iterators):
for _ in islice(iterator, idx):
pass
yield from zip(*iterators)
Выглядит почти магически, но работает честно.
Пожалуй, личный фаворит. Если присмотреться, можно заметить:
triplewise — это просто pairwise(pairwise(...)).А значит, можно сделать рекурсию:
from itertools import pairwise
def nwise(iterable, n):
if n == 1:
yield from ((x,) for x in iterable)
return
for (head, *_), tail in pairwise(nwise(iterable, n - 1)):
yield (head, *tail)
Минимализм и элегантность.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥6❤4😁1
Почему
super() не всегда означает «родительский класс» и что оно делает на самом деле.Вы пишете наследование в Python, кажется всё просто… но вывод программы может вас удивить:
class A:
def process(self):
print("A.process()")
class B(A):
def process(self):
print("B.process()")
super().process()
class C(A):
def process(self):
print("C.process()")
super().process()
class D(B, C):
def process(self):
print("D.process()")
super().process()
d = D()
d.process()
Ожидание:
D.process()
B.process()
A.process()
Реальность:
D.process()
B.process()
C.process()
A.process()
Почему
C.process() вызывается, если B наследуется от A? Всё дело в Method Resolution Order (MRO).Каждый класс в Python имеет атрибут
__mro__ — последовательность классов, через которую Python ищет методы:class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
print(D.__mro__)
# (<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>,
# <class '__main__.A'>, <class 'object'>)
Вывод:
super() вызывает следующий класс в MRO, а не «родительский класс».Python использует C3 линейнизацию, чтобы определить MRO. Основные правила:
Пример для
class D(B, C):L(D) = D + merge(L(B), L(C), [B, C])
L(B) = B, A, object
L(C) = C, A, object
merge([B,A,object],[C,A,object],[B,C]) -> D,B,C,A,object
Это гарантирует, что каждый класс вызывается ровно один раз, решая «алмазную проблему».
Использование с cooperative mixins:
class LoggingMixin:
def __init__(self, **kwargs):
print("LoggingMixin.__init__")
super().__init__(**kwargs)
class ValidationMixin:
def __init__(self, **kwargs):
print("ValidationMixin.__init__")
super().__init__(**kwargs)
class Base:
def __init__(self, name):
self.name = name
print(f"Base.__init__: {name}")
class Document(LoggingMixin, ValidationMixin, Base):
def __init__(self, name, **kwargs):
print("Document.__init__")
super().__init__(name=name, **kwargs)
doc = Document("report.pdf")
# Output:
# Document.__init__
# LoggingMixin.__init__
# ValidationMixin.__init__
# Base.__init__: report.pdf
Правила для mixins:
**kwargs и передавать их дальшеsuper().__init__() всегдаТак работает cooperative multiple inheritance: каждый класс выполняется один раз в правильном порядке.
Ошибки, которые часто встречаются:
**kwargssuper()→ классы в цепочке могут быть пропущеныПроверка MRO и super():
print(Document.__mro__)
# (<class 'Document'>, <class 'LoggingMixin'>,
# <class 'ValidationMixin'>, <class 'Base'>, <class 'object'>)
isinstance() и issubclass() также следуют MRO.🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍9🔥2
Если вы когда-нибудь пробовали работать с WhatsApp Cloud API напрямую, то вы знаете: удовольствие так себе.
И вот тут появляется PyWa — Python-фреймворк, который делает всё это разумным, понятным и быстрым.
Если коротко — почти всё, что нужно для нормального WhatsApp-бота:
— отправка текстов, картинок, файлов, локаций, кнопок — всего, что угодно;
— приём входящих событий в реальном времени: сообщения, реакции, клики;
— удобные listeners, чтобы ждать ответ от пользователя без костылей;
— создание и отправка темплейтов прямо из Python;
— построение WhatsApp Flows без боли;
— синхронный и асинхронный режимы (API одинаковый);
— из коробки работает с FastAPI, Flask и другими серверами;
— полностью типизировано, документировано и подходит под продакшн.
Пример: отправили сообщение — и всё работает:
from pywa import WhatsApp, types
wa = WhatsApp(
phone_id="100458559237541",
token="EAAEZC6hUxkTIB"
)
wa.send_message(
to="9876543210",
text="Hello from PyWa!",
buttons=[
types.Button(noscript="Menu", callback_data="menu"),
types.Button(noscript="Help", callback_data="help")
]
)
wa.send_image(
to="9876543210",
image="https://example.com/image.jpg",
caption="Check out this image!",
)
Обработка сообщений (пример на FastAPI):
from pywa import WhatsApp, filters, types
from fastapi import FastAPI
app = FastAPI()
wa = WhatsApp(
phone_id=123456,
token="********",
server=app,
callback_url="https://yourdomain.com/",
verify_token="xyz123",
app_id=123456,
app_secret="********"
)
@wa.on_message(filters.matches("Hello", "Hi"))
def hello(client: WhatsApp, msg: types.Message):
msg.react("👋")
msg.reply_text(
text=f"Hello {msg.from_user.name}!",
buttons=[types.Button(noscript="About me", callback_data="about_me")]
)
age = msg.reply("What's your age?").wait_for_reply(filters=filters.text).text
msg.reply_text(f"Your age is {age}.")
Работает очень прозрачно — почти как телеграм-боты, только для WhatsApp.
Установка:
pip install -U pywa
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5😁4
Мы в сообществе часто сталкиваемся с одной и той же ситуацией: хочется выпустить аккуратный Python-пакет, а в итоге тонешь в инструментах, конфигурациях и противоречивых советах.
И вот тут очень кстати появляется pyOpenSci Python Package Guide — спокойный, структурированный и действительно полезный материал, который объясняет весь процесс человеческим языком.
Что в нём есть:
Гайд помогает увидеть всю «картину целиком» — от структуры проекта до того, как его поддерживать дальше, когда первая волна энтузиазма прошла.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2🔥1
Ты пишешь
Python скрывает сложность вычислений за удобными методами. Но чтобы расти из джуна в мидла/сеньора в DS, нужно понимать, что происходит внутри
Залетайте на курс по математике с живыми вебинарами.
Разбираем на практике:
— манипуляции с
— реализацию линейной регрессии без «коробочных» решений;
— применение SVD-разложения для реальных задач (рекомендации, сжатие).
—
Первый вебинар уже доступен в записи.
Присоединиться до 9 декабря:
https://clc.to/LojFzw
import numpy, но понимаешь ли ты магию?Python скрывает сложность вычислений за удобными методами. Но чтобы расти из джуна в мидла/сеньора в DS, нужно понимать, что происходит внутри
fit() и predict().Залетайте на курс по математике с живыми вебинарами.
Разбираем на практике:
— манипуляции с
ndarray: векторы, матрицы, транпонирование;— реализацию линейной регрессии без «коробочных» решений;
— применение SVD-разложения для реальных задач (рекомендации, сжатие).
—
Первый вебинар уже доступен в записи.
Присоединиться до 9 декабря:
https://clc.to/LojFzw
❤4👍1
Кто такой BDFL в рамках Python?
Anonymous Quiz
30%
Формальный руководитель Python Software Foundation
14%
Главный разработчик интерпретатора CPython
14%
Автор всех официальных библиотек Python
43%
Человек, у которого финальное слово в принятии решений
👍2❤1