Forwarded from Библиотека собеса по Python | вопросы с собеседований
Как соединить два списка в список кортежей?
Для создания списка кортежей можно воспользоваться функцией zip. Она позволяет объединять не только два, но и три или более списков.
❤9👍4🥱2
🎨 Kivy vs Flet — что выбрать для GUI в Python?
Наши подписчики обсуждали, какой инструмент лучше для создания интерфейсов на Python: Kivy или Flet. Давайте разберёмся!
🔹 Kivy — это мощный фреймворк для создания нативных кроссплатформенных приложений. Работает на Windows, macOS, Linux, Android, iOS и даже Raspberry Pi. Поддерживает OpenGL для ускоренной графики, но требует сложной настройки.
🔹 Flet — это фреймворк для быстрой разработки UI на Python с использованием Flutter. Интерфейсы выглядят современно, а приложения легко развертывать в вебе, на десктопе и мобильных устройствах.
❓ Использовали ли вы Kivy или Flet? И как думаете, Python может быть хорош для фронтенда?
Библиотека питониста #междусобойчик
Наши подписчики обсуждали, какой инструмент лучше для создания интерфейсов на Python: Kivy или Flet. Давайте разберёмся!
🔹 Kivy — это мощный фреймворк для создания нативных кроссплатформенных приложений. Работает на Windows, macOS, Linux, Android, iOS и даже Raspberry Pi. Поддерживает OpenGL для ускоренной графики, но требует сложной настройки.
🔹 Flet — это фреймворк для быстрой разработки UI на Python с использованием Flutter. Интерфейсы выглядят современно, а приложения легко развертывать в вебе, на десктопе и мобильных устройствах.
❓ Использовали ли вы Kivy или Flet? И как думаете, Python может быть хорош для фронтенда?
Библиотека питониста #междусобойчик
👍12🌚4❤1🔥1
😱 Обманули с производительностью интерпретатора Python 3.14?
В прошлом месяце команда CPython представила новый интерпретатор с оптимизацией хвостовых вызовов (tail calls), который обещал улучшение производительности на 10-15%.
Однако, как выяснилось, это улучшение было связано с ошибкой в бенчмарках, вызванной регрессией в LLVM 19. При корректных настройках прирост производительности снизился до 1-5%.
Автор статьи проводил тщательные тесты и анализ, чтобы понять причины таких результатов. Несмотря на это, он всё еще считает новый интерпретатор хорошей разработкой, хотя и с меньшим улучшением производительности, чем ожидалось.
Библиотека питониста #свежак
В прошлом месяце команда CPython представила новый интерпретатор с оптимизацией хвостовых вызовов (tail calls), который обещал улучшение производительности на 10-15%.
Однако, как выяснилось, это улучшение было связано с ошибкой в бенчмарках, вызванной регрессией в LLVM 19. При корректных настройках прирост производительности снизился до 1-5%.
Автор статьи проводил тщательные тесты и анализ, чтобы понять причины таких результатов. Несмотря на это, он всё еще считает новый интерпретатор хорошей разработкой, хотя и с меньшим улучшением производительности, чем ожидалось.
Библиотека питониста #свежак
😁9❤5👍5🔥1
How to: как создать самоссылочную связь через внешний ключ?
Представьте, что вы создаете систему управления сотрудниками в Django. Вам нужно хранить информацию о сотрудниках, и вдруг вы понимаете, что у них есть отношения между собой. Например, у каждого сотрудника есть свой «линейный менеджер» и могут быть «подчиненные».
👨💻 Решение: используйте самоссылочный внешний ключ.
Как это работает:
• Моделируем связь с «линейным менеджером» как внешний ключ, указывая на самого себя (используем
• Используем поле
• Обратную связь можно легко получить с помощью поля
👍 Это решение идеально подходит для простых и неограниченно длинных иерархий, как, например, отношения между менеджерами и подчиненными.
👎 Самоссылочные связи могут быть проблемой, если отношения более сложные или имеют заранее заданные уровни.
Библиотека питониста #буст
Представьте, что вы создаете систему управления сотрудниками в Django. Вам нужно хранить информацию о сотрудниках, и вдруг вы понимаете, что у них есть отношения между собой. Например, у каждого сотрудника есть свой «линейный менеджер» и могут быть «подчиненные».
👨💻 Решение: используйте самоссылочный внешний ключ.
Как это работает:
• Моделируем связь с «линейным менеджером» как внешний ключ, указывая на самого себя (используем
self
).• Используем поле
line_manager
, чтобы задать связь «многие к одному» (снизу вверх).• Обратную связь можно легко получить с помощью поля
direct_reports
, которое позволяет найти всех сотрудников, которых управляет данный сотрудник.👍 Это решение идеально подходит для простых и неограниченно длинных иерархий, как, например, отношения между менеджерами и подчиненными.
👎 Самоссылочные связи могут быть проблемой, если отношения более сложные или имеют заранее заданные уровни.
Библиотека питониста #буст
❤4👍1🔥1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
📊💼 Ситуация на рынке труда в IT в 2025 году: результаты опроса айтишников
Помните мы проводили опрос про рабочие моменты? Пришло время делиться результатами!
В нашем исследовании приняли участие более 1000 IT-специалистов различных направлений. Работа или личная жизнь? Удалёнка или офис? Заменил ли всех ИИ?
➡️ Ответы в подробном отчёте
А какие изменения на IT-рынке замечаете вы? Делитесь в комментариях! 👇
🐸 Библиотека devops'a
Помните мы проводили опрос про рабочие моменты? Пришло время делиться результатами!
В нашем исследовании приняли участие более 1000 IT-специалистов различных направлений. Работа или личная жизнь? Удалёнка или офис? Заменил ли всех ИИ?
А какие изменения на IT-рынке замечаете вы? Делитесь в комментариях! 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🤔1
📝 Структуры данных: ТОП-30 вопросов и ответов для собеседований в 2025 году
Техническое собеседование на позицию разработчика, дата-сайентиста и ML-инженера часто включает вопросы по структурам данных и связанным с ними алгоритмами.
В нашей статье мы рассмотрим базовые и продвинутые темы, разберем типичные задачи и обсудим оптимальные способы их решения.
📄 Прочитайте статью и укрепите свои знания — https://proglib.io/sh/1uYAygzIxr
Библиотека питониста
Техническое собеседование на позицию разработчика, дата-сайентиста и ML-инженера часто включает вопросы по структурам данных и связанным с ними алгоритмами.
В нашей статье мы рассмотрим базовые и продвинутые темы, разберем типичные задачи и обсудим оптимальные способы их решения.
📄 Прочитайте статью и укрепите свои знания — https://proglib.io/sh/1uYAygzIxr
Библиотека питониста
❤5👍3😁1
Команда дня: сравнение объектов с помощью __eq__
В Python, когда вы используете оператор
❌ Поведение по умолчанию:
Без переопределения ‘__eq__’, Python сравнивает объекты на основе их ссылок в памяти. То есть, два объекта будут считаться равными только в том случае, если они являются одним и тем же объектом.
Пример:
Здесь, несмотря на то, что у объектов
✅ С методом ‘__eq__’ (пользовательское сравнение):
Чтобы изменить поведение сравнения объектов, вы можете переопределить метод ‘__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🔥2❤1
Чек-лист: 5 приемов ускорения Python
👍 JIT-компиляция с Numba:
Numba — это JIT-компилятор, который переводит код Python в быстрый машинный код. Добавив декоратор
Пример:
Результат: прирост производительности до 10-30 раз.
👍 Многозадачность:
Python ограничивает многозадачность из-за GIL, но для вычислительно сложных задач можно использовать многопроцессорность, чтобы обойти это ограничение.
Пример:
👍 Cython и PyPy:
Cython компилирует Python в C, что ускоряет выполнение кода. PyPy — это JIT-компилятор, который улучшает производительность без изменения кода.
Пример: С использованием Cython можно ускорить код, написав его в файле
👍 Правильные структуры данных:
Используйте более эффективные структуры данных, такие как массивы NumPy, вместо списков Python для числовых вычислений. Это ускоряет выполнение и экономит память.
Пример:
Векторизация операций с NumPy может быть в 50 раз быстрее.
👍 Инструменты профилирования:
Профилирование помогает понять, какие части кода нуждаются в оптимизации. Используйте cProfile и line_profiler для анализа производительности.
Пример:
Это поможет найти узкие места и ускорить работу.
Библиотека питониста #буст
👍 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()')
Это поможет найти узкие места и ускорить работу.
Библиотека питониста #буст
👍21❤3🔥3
🔥 Делимся Python-репозиториями
Давайте обсудим самые интересные и полезные Python-репозитории!
✔️ Какие репозитории вы используете чаще всего?
✔️ Какие проекты вас впечатлили, но пока не получили широкой известности?
✔️ Какой Python-репозиторий можно поковырять для удовольствия?
Библиотека питониста #междусобойчик
Давайте обсудим самые интересные и полезные Python-репозитории!
✔️ Какие репозитории вы используете чаще всего?
✔️ Какие проекты вас впечатлили, но пока не получили широкой известности?
✔️ Какой Python-репозиторий можно поковырять для удовольствия?
Библиотека питониста #междусобойчик
❤5👍2🔥1
🎙️ Подкаст: когда не стоит начинать с юнит-тестов
Всегда ли тестирование начинается с юнит-тестов? Или иногда лучше сразу писать интеграционные или end-to-end тесты?
В новом выпуске The Real Python Podcast вы узнаете:
🔸 С чего лучше начинать тестирование кода
🔸 Как использовать pytest для интеграционных тестов
🔸 Что важно при создании тестового набора
🔸 Когда юнит-тесты действительно необходимы
🔗 Подкаст доступен по ссылке: https://clc.to/rcPHEw
Библиотека питониста #буст
Всегда ли тестирование начинается с юнит-тестов? Или иногда лучше сразу писать интеграционные или end-to-end тесты?
В новом выпуске The Real Python Podcast вы узнаете:
🔸 С чего лучше начинать тестирование кода
🔸 Как использовать pytest для интеграционных тестов
🔸 Что важно при создании тестового набора
🔸 Когда юнит-тесты действительно необходимы
🔗 Подкаст доступен по ссылке: https://clc.to/rcPHEw
Библиотека питониста #буст
👍7❤1
Forwarded from Proglib.academy | IT-курсы
Можно ли стать разработчиком, если в школе ненавидел математику? А если наоборот — тащился от алгебры и геометрии, но кодить не умеешь? Эта статья раскладывает всё по полочкам: где без математики никуда, а где можно и без неё.
✓ Почему все считают, что программисты — математики
✓ В каких сферах разработки можно вообще не знать математику
✓ Где хватит готовых библиотек, а где придётся разбираться в формулах
✓ Какие области программирования требуют мощного математического бэкграунда
✓ Что делать, если математика — это боль, но хочется освоить ML или Data Science
✓ Топ книг, которые помогут понять и даже полюбить математику
Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Когда изучить, как оно работает, в шаге от тебя, но ты снова выбираешь путь страданий... 😭
Библиотека питониста #развлекалово
Библиотека питониста #развлекалово
😁15💯5❤3
📊 Тестовые задания — любовь или боль?
По данным исследования, 81% IT-специалистов в России просто игнорируют вакансии с тестовыми заданиями. Программисты оказались самыми «неприступными» — только 19% согласны их выполнять.
😆 Только тестировщики, которые сами по долгу службы гоняют тесты, готовы пройти их ради работы (63%). Профессиональная эмпатия?
Как вы относитесь к тестовым заданиям при трудоустройстве? Делитесь мнением в комментах! 👇
🔥 — готов(-а) выполнить, если вакансия интересная
👍 — только если тестовое оплачивается
🌚 — игнорю такие вакансии сразу
🤔 — я уже делал(-а) тестовое, а его использовали в проде бесплатно
Библиотека питониста #междусобойчик
По данным исследования, 81% IT-специалистов в России просто игнорируют вакансии с тестовыми заданиями. Программисты оказались самыми «неприступными» — только 19% согласны их выполнять.
😆 Только тестировщики, которые сами по долгу службы гоняют тесты, готовы пройти их ради работы (63%). Профессиональная эмпатия?
Как вы относитесь к тестовым заданиям при трудоустройстве? Делитесь мнением в комментах! 👇
🔥 — готов(-а) выполнить, если вакансия интересная
👍 — только если тестовое оплачивается
🌚 — игнорю такие вакансии сразу
🤔 — я уже делал(-а) тестовое, а его использовали в проде бесплатно
Библиотека питониста #междусобойчик
🔥43🌚18👍14🤔5
🐍 Твой Python-код жрёт память? 11 способов это исправить!
Высокая производительность и масштабируемость невозможны, если приложение неэффективно расходует RAM. Разберём лучшие техники оптимизации памяти в Python, которые помогут сократить потребление ресурсов и ускорить работу кода.
👉 Читать статью
Библиотека питониста
Высокая производительность и масштабируемость невозможны, если приложение неэффективно расходует 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
Библиотека питониста #свежак
🔹 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❤🔥2❤1
Это база: быстрая проверка списка на пустоту
При проверке списка на пустоту часто используют два варианта:
✅ Pythonic способ:
⏳ Медленный способ:
Хотя оба варианта работают, первый быстрее почти в 2 раза!
if not mylist быстрее, потому что:
✔️ Использует 2 инструкции виртуальной машины (LOAD_GLOBAL, TO_BOOL).
✔️ Инструкция
if len(mylist) == 0 медленнее, потому что:
📍 Требует 5 инструкций (LOAD_GLOBAL, LOAD_FAST, CALL, LOAD_CONST, COMPARE_OP).
📍 Вызывает
Вывод:
Используйте
👉 Подробности можно узнать в детальной статье: https://clc.to/rd3OQg
Библиотека питониста #буст
При проверке списка на пустоту часто используют два варианта:
✅ 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
🚀 Вышел 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?
👍 Обновляемся на патчи
🤔 Ждём крупных релизов
Библиотека питониста #свежак
Свежий патч-релиз 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🤔7❤3
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
👍3