
- Главная
- Каталог
- Интернет технологии
- Библиотека питониста
Библиотека питониста
Полезные материалы по всему, что может быть полезно питонисту.
Статистика канала
Многие думают, что
list — это связный список. На самом деле это динамический массив указателей. 1. Как он хранится в памяти
В структуре
PyListObject на языке C список состоит из трех ключевых полей:—
ob_item — указатель на массив, где лежат адреса объектов.—
ob_size — текущее количество элементов (то, что выдает `len()`).—
allocated — сколько ячеек памяти зарезервировано на самом деле.2. Магия Append и «переезд» памяти
Python не выделяет память под каждый новый элемент. Он делает это «на вырост» (over-allocation). Если вы создаете пустой список и делаете
append, Python выделит сразу 4 ячейки. Когда они закончатся — 8, потом 16, 24 и так далее.Почему
append быстрый? В 99% случаев вы просто записываете адрес в уже готовую ячейку ().Что такое Resize? Когда лимит (`allocated`) исчерпан, Python ищет в памяти новый кусок побольше и копирует туда все указатели. Это , но из-за редких «переездов» амортизированная сложность остается .
3. Почему в списке может лежать «всё что угодно»
Размер самого списка не зависит от того, лежат там строки или другие списки. Массив
ob_item хранит только указатели (адреса в памяти), а они всегда фиксированного размера — 8 байт на 64-битной системе.Благодаря этому Python мгновенно находит любой элемент по индексу. Адрес -го элемента вычисляется по простой формуле:
адрес = начало_массива + i * 8 байт.📍 Навигация: Вакансии • Задачи • Собесы
#буст
Если вы хоть раз тратили полдня на то, чтобы вручную переписывать огромные JSON-словари в тестах после мелкого изменения в API — этот инструмент для вас.
Команда Pydantic вовсю использует inline-snapshot, чтобы навсегда забыть о ручном обновлении ассертов.
Вместо того чтобы придумывать «ожидаемый результат», вы просто пишете:
from inline_snapshot import snapshot
def test_api():
data = fetch_data()
assert data == snapshot({}) # Сначала оставляем пустым
Теперь запустите:
pytest --inline-snapshot=fix.Библиотека сама вставит актуальные данные прямо в ваш .py файл! Теперь ваш тест выглядит так:
def test_api():
data = fetch_data()
assert data == snapshot({
"id": 123,
"status": "active",
"name": "Pydantic Fan"
})
😎 Продвинутые хаки для профи
1. Динамические данные (dirty-equals)
Если в ответе есть поля, которые меняются при каждом запуске (ID, таймстампы), используйте
dirty-equals. Они идеально работают в связке с инлайн-снимками:
from dirty_equals import IsInt, IsNow
assert user_data == snapshot({
"id": IsInt(), # Снепшот запомнит условие, а не число
"created_at": IsNow(), # Проверит время, близкое к текущему
"status": "active"
})
2. Нормализация данных
Чтобы тесты не падали из-за того, что объект — это не словарь, а инстанс класса, используйте Pydantic для конвертации:
from pydantic import TypeAdapter
_adapter = TypeAdapter(object)
# Конвертируем всё в обычные dict/list перед сравнением
assert _adapter.dump_python(user_model) == snapshot(...)
🔗 Попробовать: https://clc.to/RHb6SA
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Руководство Django Antipatterns — это концентрат опыта сообщества о том, как писать чистый и производительный код, избегая типичных ловушек.
В гайде также разобраны ключевые отличия, на которых часто валятся новички: ForeignKey vs OneToOneField и reverse vs redirect.
🔗 Весь список паттернов с примерами: https://clc.to/Fg21Tg
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Незаменимый инструмент для оценки эффективности алгоритмов
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Вы когда-нибудь задумывались, чем на самом деле являются привычные нам print, str или enumerate? Мы привыкли называть их «функциями», потому что мы их вызываем через круглые скобки.
Но в Python всё немного интереснее.
Попробуйте угадать, что из этого функция, а что — класс:
1. print()
2. str()
3. list()
4. sum()
Проверяем:
1. print —
2. str — (
3. list —
4. sum —
В Python и функции, и классы являются callable (вызываемыми) объектами.
Когда мы вызываем функцию, мы запускаем её код, чтобы она что-то сделала или вернула результат.
Когда мы вызываем класс, мы создаем его новый экземпляр (instance).
Например, вызывая str(4), мы технически создаем новый объект класса str. Но в повседневной речи мы почти всегда говорим «функция str». И это абсолютно нормально!
🦆 Утиная типизация в деле
То, что мы называем классы функциями — это классический пример duck typing:
«Если это выглядит как утка и крякает как утка, то это утка».
Для нас как для разработчиков часто неважно, как реализован инструмент «под капотом». Если мы можем его вызвать через (), значит для нас это функция.
Даже сама функция type() — это на самом деле класс!
>>> type
<class 'type'>
Но согласитесь, фраза «я вызвал класс type, чтобы узнать тип объекта» звучит максимально странно.
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Если вам надоело гадать, как работают объекты, потоки и сборщик мусора, то этот репозиторий — настоящий клад.
CPython Internals — это подробнейший гид по исходному коду Python. Автор буквально препарирует C-код интерпретатора и объясняет, как абстрактные конструкции превращаются в реальные байты.
🔗 Репозиторий здесь: https://clc.to/DO4Ldw
📍 Навигация: Вакансии • Задачи • Собесы
#буст
📍 Навигация: Вакансии • Задачи • Собесы
#буст
Python 3.14.3 и 3.13.12
Минорные релизы.
Как Python управляет памятью под капотом
Разбор того, что на самом деле происходит с объектами, ссылками и GC.
unihttp — библиотека для работы с API
Попытка упростить жизнь там, где у сервиса нет нормального SDK. Хорошо заходит в микросервисной реальности, где API больше, чем документации.
Plotly для визуализации данных
База по интерактивным графикам на Python. Отличный инструмент для дашбордов и отчётов.
sys.settrace и внутренняя кухня инструментов
Как работают дебаггеры, coverage и профайлеры на уровне интерпретатора.
🚧 Вакансии
Middle+ / Senior Backend Developer (Python + SQL)
от 250 000 до 350 000 ₽
Удалёнка
ML Engineer (LLM)
от 300 000 до 450 000 ₽
Удалёнка
Python-разработчик
200 000 — 300 000 ₽/мес на руки
Офис/Гибрид (Москва)
📍 Навигация: Вакансии • Задачи • Собесы
#свежак
Мы написали и собрали для вас в одну подборку все 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
Отзывы канала
всего 3 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Библиотека питониста — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 38.8K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 7.4, количество отзывов – 3, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 36363.6 ₽, а за 15 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий