Telegram Web Link
📝 Структуры данных: ТОП-30 вопросов и ответов для собеседований в 2025 году

Техническое собеседование на позицию разработчика, дата-сайентиста и ML-инженера часто включает вопросы по структурам данных и связанным с ними алгоритмами.

В нашей статье мы рассмотрим базовые и продвинутые темы, разберем типичные задачи и обсудим оптимальные способы их решения.

📄 Прочитайте статью и укрепите свои знания https://proglib.io/sh/1uYAygzIxr

Библиотека питониста
5👍3😁1
Команда дня: сравнение объектов с помощью __eq__

В Python, когда вы используете оператор == для сравнения объектов, по умолчанию проверяется, ссылаются ли объекты на один и тот же экземпляр в памяти. Однако, если вы хотите настроить, как должны сравниваться объекты вашего класса, вам нужно переопределить метод ‘__eq__’.

Поведение по умолчанию:

Без переопределения ‘__eq__’, Python сравнивает объекты на основе их ссылок в памяти. То есть, два объекта будут считаться равными только в том случае, если они являются одним и тем же объектом.

Пример:
class MyClass:
def __init__(self, value):
self.value = value

a, b = MyClass(1), MyClass(1)
print(a == b) # False


Здесь, несмотря на то, что у объектов a и b одинаковые значения атрибутов, они считаются неравными, так как это разные экземпляры класса.


С методом ‘__eq__’ (пользовательское сравнение):

Чтобы изменить поведение сравнения объектов, вы можете переопределить метод ‘__eq__’ в вашем классе. Этот метод будет определять, что именно считать равенством для объектов вашего класса.

Пример:
class MyClass:
def __init__(self, value):
self.value = value

def __eq__(self, other):
if isinstance(other, MyClass):
return self.value == other.value
return False

a, b = MyClass(1), MyClass(1)
print(a == b) # True


В этом примере мы определяем, что объекты считаются равными, если их атрибуты value одинаковы. Теперь вывод будет True, так как у a и b одинаковые значения.

Библиотека питониста #буст
👍16🔥21
Чек-лист: 5 приемов ускорения Python

👍 JIT-компиляция с Numba:
Numba — это JIT-компилятор, который переводит код Python в быстрый машинный код. Добавив декоратор @jit, вы можете ускорить вычисления в циклах и операциях с массивами.

Пример:
from numba import jit
import numpy as np
import time

@jit(nopython=True)
def sum_squares(arr):
total = 0
for i in range(arr.shape[0]):
total += arr[i] * arr[i]
return total

data = np.arange(1000000)
start = time.time()
result = sum_squares(data)
end = time.time()
print("Numba JIT:", result, "Time:", end - start)


Результат
: прирост производительности до 10-30 раз.

👍 Многозадачность:
Python ограничивает многозадачность из-за GIL, но для вычислительно сложных задач можно использовать многопроцессорность, чтобы обойти это ограничение.

Пример:
import multiprocessing as mp

def process_image(image):
return image ** 2

if __name__ == '__main__':
images = range(20)
with mp.Pool(mp.cpu_count()) as pool:
results = pool.map(process_image, images)
print(results)


👍 Cython и PyPy:
Cython компилирует Python в C, что ускоряет выполнение кода. PyPy — это JIT-компилятор, который улучшает производительность без изменения кода.

Пример: С использованием Cython можно ускорить код, написав его в файле .pyx, а с PyPy просто сменив интерпретатор.

👍 Правильные структуры данных:
Используйте более эффективные структуры данных, такие как массивы NumPy, вместо списков Python для числовых вычислений. Это ускоряет выполнение и экономит память.

Пример:
import numpy as np
data = np.arange(1000000)
result = data * 2


Векторизация операций с NumPy может быть в 50 раз быстрее.

👍 Инструменты профилирования:
Профилирование помогает понять, какие части кода нуждаются в оптимизации. Используйте cProfile и line_profiler для анализа производительности.

Пример:
import cProfile

def heavy_computation():
return sum([i * i for i in range(1000000)])

cProfile.run('heavy_computation()')


Это поможет найти узкие места и ускорить работу.

Библиотека питониста #буст
👍213🔥3
🔥 Делимся Python-репозиториями

Давайте обсудим самые интересные и полезные Python-репозитории!

✔️ Какие репозитории вы используете чаще всего?
✔️ Какие проекты вас впечатлили, но пока не получили широкой известности?
✔️ Какой Python-репозиторий можно поковырять для удовольствия?

Библиотека питониста #междусобойчик
5👍2🔥1
🎙️ Подкаст: когда не стоит начинать с юнит-тестов

Всегда ли тестирование начинается с юнит-тестов? Или иногда лучше сразу писать интеграционные или end-to-end тесты?

В новом выпуске The Real Python Podcast вы узнаете:

🔸 С чего лучше начинать тестирование кода
🔸 Как использовать pytest для интеграционных тестов
🔸 Что важно при создании тестового набора
🔸 Когда юнит-тесты действительно необходимы

🔗 Подкаст доступен по ссылке: https://clc.to/rcPHEw

Библиотека питониста #буст
👍71
Нужна ли математика программисту

Можно ли стать разработчиком, если в школе ненавидел математику? А если наоборот — тащился от алгебры и геометрии, но кодить не умеешь? Эта статья раскладывает всё по полочкам: где без математики никуда, а где можно и без неё.

➡️ Что внутри:

✓ Почему все считают, что программисты — математики

✓ В каких сферах разработки можно вообще не знать математику

✓ Где хватит готовых библиотек, а где придётся разбираться в формулах

✓ Какие области программирования требуют мощного математического бэкграунда

✓ Что делать, если математика — это боль, но хочется освоить ML или Data Science

✓ Топ книг, которые помогут понять и даже полюбить математику

🔵 Чтобы знать математику, забирайте наш курс → «Математика для Data Science»

📎 Читать статью

Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
Когда изучить, как оно работает, в шаге от тебя, но ты снова выбираешь путь страданий... 😭

Библиотека питониста #развлекалово
😁15💯53
📊 Тестовые задания — любовь или боль?

По данным исследования, 81% IT-специалистов в России просто игнорируют вакансии с тестовыми заданиями. Программисты оказались самыми «неприступными» — только 19% согласны их выполнять.

😆 Только тестировщики, которые сами по долгу службы гоняют тесты, готовы пройти их ради работы (63%). Профессиональная эмпатия?

Как вы относитесь к тестовым заданиям при трудоустройстве? Делитесь мнением в комментах! 👇

🔥 — готов(-а) выполнить, если вакансия интересная
👍 — только если тестовое оплачивается
🌚 — игнорю такие вакансии сразу
🤔 — я уже делал(-а) тестовое, а его использовали в проде бесплатно

Библиотека питониста #междусобойчик
🔥43🌚18👍14🤔5
🐍 Твой Python-код жрёт память? 11 способов это исправить!

Высокая производительность и масштабируемость невозможны, если приложение неэффективно расходует RAM. Разберём лучшие техники оптимизации памяти в Python, которые помогут сократить потребление ресурсов и ускорить работу кода.

👉 Читать статью

Библиотека питониста
👍10😁1
🐍 Новости недели

🔹 PEP 736 отклонён — предложение о краткой записи именованных аргументов отвергнуто.
🔹 Polars Cloud — новый облачный сервис для удалённого выполнения запросов.
🔹 Опасные PyPI-пакеты — вредоносные библиотеки похитили облачные токены 14 100 пользователей.
🔹 Ошибка в бенчмарках CPython 3.14 — прирост производительности tail-call интерпретатора завышен из-за некорректных тестов.
🔹 Django на FOSDEM 2025 — секция «Inclusive Web» о доступности и инклюзивности в вебе.

🎥 Что посмотреть:
🔹 Создание Google Docs с Python
🔹 12 встроенных функций Python

🛠 Полезности:
🔹 Справочник инструментов разработчика Python

📚 Что почитать:
🔹 Анонимный чат в Telegram: бот с MiniApp интерфейсом
🔹 Как работают dict, slots и weakref
🔹 Аннотации типов
🔹 Python-разработчик изучает C++

🏗 Репозитории:
🔹 Pydoll — автоматизация браузеров
🔹 Nodezator — графический редактор узлов
🔹 phmutest — отладка неработающих примеров в Markdown

Библиотека питониста #свежак
👍7❤‍🔥21
Это база: быстрая проверка списка на пустоту

При проверке списка на пустоту часто используют два варианта:

Pythonic способ:
if not mylist:


Медленный способ:
if len(mylist) == 0:


Хотя оба варианта работают, первый быстрее почти в 2 раза!

if not mylist быстрее, потому что:
✔️ Использует 2 инструкции виртуальной машины (LOAD_GLOBAL, TO_BOOL).
✔️ Инструкция TO_BOOL_LIST оптимизирована под списки и читает размер за 1 операцию.

if len(mylist) == 0 медленнее, потому что:
📍 Требует 5 инструкций (LOAD_GLOBAL, LOAD_FAST, CALL, LOAD_CONST, COMPARE_OP).
📍 Вызывает len(), что добавляет функциональные вызовы и лишние обращения к памяти.

Вывод:
Используйте if not mylist — это и короче, и быстрее. Особенно важно в критичных к скорости местах кода!

👉 Подробности можно узнать в детальной статье: https://clc.to/rd3OQg

Библиотека питониста #буст
21👍14😁4😢1🥱1
Что выведет код сверху?

👾 — 9
👍 — 6
🥰 — 4
🤔 — Error

Библиотека задач по Python
🤔73🥰51👍38👾3
🚀 Вышел NumPy 2.2.4

Свежий патч-релиз NumPy 2.2.4 включает важные исправления ошибок и значительные улучшения в системе типов. Также обновлена поддержка платформ.

Основные фиксы:
✔️ Исправлены ошибки в numpy.loadtxt, np.nonzero, bincount, searchsorted
✔️ Улучшена безопасность многопоточного выполнения
✔️ Исправлена сборка на s390x с clang
✔️ Обновлена поддержка FreeBSD и тестов на QEMU
✔️ Существенные улучшения типизации

Ссылка на релиз: https://clc.to/4AxrTw

Вы обновляетесь на патч-релизы вроде 2.2.4 или ждёте крупных обновлений, таких как 2.3 или 2.4?

👍 Обновляемся на патчи
🤔 Ждём крупных релизов

Библиотека питониста #свежак
👍15🤔73
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!

Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
👍3
🧠 Шпаргалка по алгоритмам

Готовитесь к техническому интервью или хотите прокачать алгоритмическое мышление? Мы нашли отличный репозиторий-шпаргалку с ключевыми концепциями, которые помогут вам уверенно решать задачи.

Внутри:
🔹 Разбор основных структур данных
🔹 Популярные алгоритмы и их применение
🔹 Советы по оптимизации решений
🔹 Подходы к решению задач на кодинг-интервью

Ссылка на репозиторий: https://clc.to/_fEkZg

Библиотека питониста #буст
👍91
Media is too big
VIEW IN TELEGRAM
🧑‍💻 Какой язык программирования учить в 2025 году

Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162
🖥️ Обзор: какую Python GUI-библиотеку выбрать в 2025 году?

Хотите добавить графический интерфейс в ваше приложение, но не знаете, с чего начать? Тогда эта статья для вас!

Что вас ждет в статье:

✔️ Сравнение самых популярных Python GUI-фреймворков и их ключевых преимуществ.
✔️ Лицензионные моменты, которые могут повлиять на ваш выбор.
✔️ Примеры кода с простыми приложениями «Hello, World!» для каждой библиотеки.

🎯 Зачем читать?

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

👉 Ссылка на статью: https://clc.to/j3l2Zw

Библиотека питониста #буст
👍94🔥1
⚙️ How to: оптимизируем код с помощью профилировщика

Хотите узнать, что замедляет ваш код? Используйте встроенный профилировщик cProfile. Этот мощный инструмент поможет выявить проблемные участки и ускорить выполнение.

Пример использования:
import hashlib
import cProfile

cProfile.run('hashlib.md5("abcdefghiijkl").digest()')


Что показывает результат:
▪️ Общее время: 4 вызова функций за 0.000 CPU секунд.
▪️ Подробная статистика:
- ncalls: количество вызовов.
- tottime: общее время в функции.
- percall: время на один вызов.
- cumtime: кумулятивное время.
- filename:lineno(function): расположение функции.

Пример вывода:
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)

1 0.000 0.000 0.000 0.000 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 {hashlib._md5}
1 0.000 0.000 0.000 0.000 {method 'digest' of '_hashlib.HASH' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}


Как оптимизировать:
1. Анализируйте tottime и cumtime: ищите функции с наибольшим временем выполнения.
2. Сократите вызовы: если ncalls высок, рассмотрите оптимизацию логики.
3. Тестируйте изменения: повторяйте профилирование после оптимизации.

Библиотека питониста #буст
👍143
💬 Как оставлять комментарии в чате нашего канала

В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.

⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.

Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.

Как присоединиться к чату, чтобы бот вас не забанил

— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат

После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.

❗️ Если вас все-таки забанили

— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу

Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.

👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
2025/07/09 13:34:30
Back to Top
HTML Embed Code: