№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Циклический сдвиг списка на N элементов вправо
Выше приведено решение с помощью слайсов.
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Функция make_multiplier возвращает лямбду, которая замыкает n. doubler умножает на 2, а tripler — на 3, поэтому результат 10 и 15.
➡️ LiteLLM — использование любого LLM с использованием OpenAI и многое другое
LiteLLM – инструмент для гибкого и лёгкого управления LLM в Python. С ним можно быстро переключаться между моделями, контролировать затраты, интегрировать API без изменений кода и оптимизировать производительность через балансировку нагрузки.•
Поддержка единого формата для всех LLM, что упрощает интеграцию.•
Возможность управления расходами и ограничения скорости запросов для предотвращения перегрузок.
🔗 Ссылочка на доку
⚙️ all()
В Python функция all()
проверяет, соответствуют ли все элементы условию (истинны). Отличный способ убедиться, что все значения удовлетворяют требованиям.
Что такое линейная сложность сортировки?
Линейная сложность сортировки обозначает алгоритм сортировки, который имеет временную сложность, пропорциональную количеству элементов в сортируемом массиве (или коллекции). В математической нотации линейная сложность обозначается как O(n), где "n" - количество элементов.
Примером линейной сортировки может быть алгоритм «сортировка подсчётом» (counting sort). В этом алгоритме создается дополнительный массив для подсчета количества вхождений каждого элемента. Затем на основе этой информации о количестве вхождений каждого элемента строится отсортированный массив.
#для_начинающих
Что такое MRO?
MRO (Method Resolution Order) — это механизм, используемый для определения порядка разрешения методов при наследовании классов и множественном наследовании. MRO определяет, какие методы будут вызываться в случае, когда у наследующего класса есть методы с одинаковыми именами, унаследованными от разных базовых классов.
MRO в Python определяется с помощью алгоритма C3 Linearization (C3 линеаризации). Этот алгоритм гарантирует, что порядок разрешения методов будет согласован и предсказуем вне зависимости от порядка наследования. Он предотвращает проблемы, связанные с амбигуитетами и неоднозначностями в множественном наследовании.
#для_продвинутых
Функция id()
Функция id()
используется для получения уникального идентификатора объекта. Этот идентификатор является целым числом, которое уникально для каждого объекта в рамках выполнения программы. Функция id()
принимает один аргумент, который представляет собой объект, и возвращает его идентификатор.
Обратите внимание, что идентификатор объекта может измениться во время выполнения программы, если объект перемещается в памяти. Поэтому id() полезно для определения, указывают ли две переменные на один и тот же объект, но не следует полагаться на него для других целей, таких как сравнение объектов на идентичность.
#для_продвинутых
classmethod
classmethod — это декоратор в Python, который используется для определения методов класса, которые не принимают экземпляр класса (self) в качестве первого аргумента, а вместо этого принимают класс (cls) в качестве первого аргумента. Эти методы могут использоваться для операций, которые связаны с самим классом, а не с его экземплярами.
#для_начинающих
Срезы
Срезы (slices) в Python — это способ получения подстроки (подсписка) из последовательности, такой как строка (str), список (list) или кортеж (tuple).
👩💻 Задача по Python
Создайте функцию find_longest_substring
для поиска самой длинной подстроки в строке, содержащей уникальные символы. Функция должна возвращать длину этой подстроки.
Пример:
print(find_longest_substring("abcabcbb")) # Вернёт 3, т.к. самая длинная уникальная подстрока "abc"
print(find_longest_substring("bbbbb")) # Вернёт 1, т.к. самая длинная уникальная подстрока "b"
print(find_longest_substring("pwwkew")) # Вернёт 3, т.к. самая длинная уникальная подстрока
Тестовое собеседование на Middle Python-разработчика в четверг
31 октября(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
1. Савва Демиденко, ex. TechLead в Яндексе, Авито и другом русском бигтехе будет задавать реальные вопросы и задачи разработчику-добровольцу
2. Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Савве
Что узнаешь на прямом эфире от ШОРТКАТ:
— Чего ждут от кандидатов на Middle позиции в Python-разработке
— Какие вопросы задают на интервью и зачем
— Как подготовиться к собесу, чтобы получить оффер
Это бесплатно? Бесплатно
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_python_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqwcirGU
➡️ Разница между list.sort()
и sorted()
в Pythonlist.sort()
сортирует список на месте, изменяя его, и возвращает None, тогда как sorted()
создает новый отсортированный список, оставляя оригинал неизменным.
✔️ Оба метода имеют параметры key
и reverse
, позволяя кастомизировать сортировку.
• list.sort()
используется для изменения оригинального списка. • sorted() возвращает новый отсортированный список из любого итерируемого объекта.
🔗 Почитать подробнее
⚡️Выйти на стабильный доход в 150+ тысяч рублей можно всего за 3 месяца обучения в IT.
Сегодня переход в сферу IT — это не просто модный тренд, а реальная возможность изменить свою жизнь.
Ребята из онлайн-академии StepByStep в своем канале проводят бесплатный интенсив, благодаря которому можно погрузиться в мир IT и освоить самую востребованную профессию 2025 года – системный аналитик.
✅ Гарантия трудоустройства после обучения.
Переходи и бесплатно изучай для себя новое прибыльное направление: /channel/+A1rEg2B5u_dlOTMy
➡️ Использование Pint для работы с единицами измерения и конвертаций
Pint упрощает вычисления, используя единицы, и автоматически проверяет их совместимость, что позволяет избежать ошибок при работе с различными системами измерения.•
Pint полезен в научных вычислениях, финансовых и инженерных приложениях, где важна точность измерений.
🔗 Ссылочка на доку
➡️ Использование cachetools для кэширования в Python
cachetools — это небольшая, но мощная библиотека для кэширования, которая предоставляет различные стратегии кэширования, такие как LRU (Least Recently Used), LFU (Least Frequently Used) и другие. Она позволяет оптимизировать производительность, избегая повторных вычислений или запросов.•
cachetools полезна, когда требуется хранить временные результаты или промежуточные данные для повышения производительности.
🔗 Ссылочка на доку
⁉️ Столкнулись с тормозящим кодом?
Асинхронность и потоки в Python — это два инструмента, которые могут сделать ваши программы быстрее, но где же разница? Если вам важно оптимизировать выполнение запросов и IO-операций, не пропустите бесплатный открытый урок 12 ноября в 20:00 мск!
Мы рассмотрим вытесняющую и кооперативную многозадачность, обсудим процессы и потоки на уровне ОС. Вы узнаете, что такое race conditions и как их избежать, а также получите практическое понимание, как работает asyncio в Python.
👨💻🛠👨🏻💻 Урок для Python-разработчиков, Data Scientists и ML-инженеров, которые работают с базами данных, API и многозадачностью.
🔴 Запишитесь на урок и получите скидку на курс «Python для аналитики»: https://otus.pw/GdtE/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚙️ filter()
В Python функция filter()
используется для отбора элементов, соответствующих условию. Она возвращает итератор, что делает её удобной и эффективной для обработки больших данных.
🎉 Приглашаем вас на бесплатный практический урок "Временные ряды - Фурье и вейвлет анализ", который состоится 11.11.2024 в 20:00 (мск)! 🕗
Хотите стать крутым аналитиком данных или обучать машины в 2024?
На вебинаре мы узнаем:
- Насколько нормален временной ряд? Преобразование Бокса-Кокса и зачем оно нужно;
- Компоненты временного ряда: фурье-анализ и прогнозирование значений повторяющихся процессов;
- Нестационарные процессы: как вейвлет-анализ позволяет проводить классификацию сложных событий во временных рядах.
В результате вебинара вы узнаете:
- Как нормализировать временной ряд с помощью преобразования Бокса-Кокса;
- Как разложить ряд на компоненты и с их помощью прогнозировать будущие значения;
- Как анализировать нестационарные процессы с помощью вейвлет-анализа.
Этот открытый урок будет особенно интересен ML-инженерам, которые начинают знакомство с временными рядами и хотят вырваться за границы модели SARIMA.
Не упустите возможность углубить свои знания в области временных рядов!
👉 Присоединяйтесь к нам: https://otus.pw/Yuht/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Без передачи b функция использует b = a + 1, поэтому x = 3 * 4 = 12. С b=5 функция увеличивает b на 2, давая y = 3 * 7 = 21.
IT-meetup для Python-разработчиков от команды «Группы Астра» и разработчиков RuPost
Разгоним осеннюю хандру! Говорят, что лучше всего в этом помогает непринужденная атмосфера среди единомышленников и кружка хорошего пшеничного смузи. 😎
План такой (надежный как швейцарские часы):
1) Проблемы GIL в Production и их возможные решения
Только реальные кейсы, только хард-рок! Расскажем про проблемы, с которыми столкнулись и как их решали.
Обсудим нововведения в Python 3.13, связанные с GIL.
2) Наш опыт использования JSON-RPC API
Почему именно JSON RPC? Сравним подходы и узнаем, где же REST, а также коснёмся документации.
3) Джедайские техники написания кода
Каков он путь джедая: от Юнлинга до Магистра. Испытания и приключения на всех уровнях. Главное, друг мой, не сходить с пути истинного — поделимся кодексом джедая.
И, конечно же, это не все! Тебя ждут интересные дискуссии, обмен опытом, классные знакомства и розыгрыш мерча.
⏱ Записываем: 15 ноября в 19:00 | Лофт «Событие», Москва, Николоямская улица дом 28
Регистрация доступна по ссылке.
Глубокое копирование (deep copy)
Глубокое копирование нужно для создания полной копии объекта, включая все вложенные объекты. Это важно для изменяемых объектов, таких как списки, чтобы изменения в копии не затрагивали оригинал.
Когда мы вызываем глубокое копирование, происходит следующее:
- Создается новый контейнерный объект (список, словарь и т. д.);
- Для каждого элемента исходного объекта рекурсивно вызывается глубокое копирование:
- Если элемент является изменяемым объектом (списком, словарем), то создается его копия с рекурсивным копированием вложенных элементов;
- Если элемент неизменяемый (число, строка) - он просто копируется как есть;
- Копии вложенных объектов вставляются в копию исходного объекта.
#это_база
Бесплатное IT-образование в 2024
Отобрали для вас полезные телеграм-каналы, которые помогут освоить программирование и другие IT-направления
Выбирайте нужное и подписывайтесь:
👩💻 Python: @PythonPortal
🖥 Базы Данных & SQL: @SQL
👩💻 Java: @Java_Iibrary
👩💻 С/С++: @Cpportal
📱 GitHub: @git_developer
🤓 Книги айти: @portalToIT
👩💻 Frontend: @FrontendPortal
⚙️ Backend: @BackendPortal
👩💻 C#: @KodBlog
👩💻 Golang: @juniorGolang
👩💻 PHP: @PHPortal
👩💻 Моб. разработка: @MobDev
👩💻 Разработка игр: @GameDevgx
👩💻 DevOps: @loose_code
🖥 Data Science: @DataSciencegx
🤔 Хакинг & ИБ: @cybersecinform
🐞 Тестирование: @QAPortal
📱 Маркетинг: @MarketingPortal
🖥 Дизайн: @PortalToDesign
➡️ Сохраняйте себе, чтобы не потерять
Обезьяний патч
Обезьяний патч (Monkey patch) в Python — это техника, которая позволяет изменять или расширять функциональность существующих классов, модулей или объектов во время выполнения программы. Этот термин образовался из-за аналогии с идеей того, что вы «насаживаете» (patch) код поверх существующего, подобно обучению обезьяны выполнять новые трюки.
#для_продвинутых
Яндекс Foodtech Tour теперь в Казани!
Эксперты Еком-сервисов Яндекс продолжают тур по городам с митапами для бэкенд-разработчиков. Ближайший пройдет в Казани уже 14 ноября. В программе три доклада:
👉 Никита Сидоров, руководитель службы инфраструктуры пользовательской скорости в Яндекс маркете, расскажет про подходы к работе над перформансом приложения
👉 Гадель Закиров и Назар Старанцов, руководители групп в Яндекс Еде, объяснят, как можно ускорять старт приложения и загрузку главной страницы
👉 Гоша Пономарев и Костя Захматов, разработчики в Яндекс Лавке, поделятся историей ускорения работы в дарксторах
После докладов гостей ждет открытый микрофон со спикерами и афтепати. Зовите друзей и регистрируйтесь!
Обратите внимание, количество мест ограничено. После регистрации обязательно дождитесь подтверждения заявки.
⚙️ any()
В Python функция any()
проверяет, есть ли хотя бы один истинный элемент в итерируемом объекте. Она отлично подходит для быстрых проверок наличия условий, например, поиска элементов в списке.
➡️ Использование библиотеки Arrow для работы с датами и временем в Python
Arrow — это библиотека для более удобной работы с датами и временем в Python. Она предоставляет простой API для создания, преобразования и форматирования объектов datetime, упрощая работу с временными зонами и временем выполнения задач.•
Arrow поддерживает естественные синтаксические конструкции и форматирование дат, а также имеет встроенные функции для манипуляции временем.
🔗 Ссылочка на доку
⚙️ XlsxWriter для записи файлов в формате Excel
ℹ️ XlsxWriter — это очень мощный модуль Python для записи файлов в формате Excel. Он поддерживает добавление текста, чисел, формул, изображений и макросов Excel — среди прочих функциональных возможностей.
✔️ XlsxWriter даже интегрируется с pandas, известным пакетом Python для работы с данными.
🔗 Ссылочка на доку
➡️ Использование библиотеки Pyee для создания и управления событиями в Python
Pyee — это небольшая, но мощная библиотека, предоставляющая событийно-ориентированный подход в стиле Node.js для Python. Она позволяет легко создавать и управлять событиями в ваших приложениях, улучшая структуру кода и обеспечивая более гибкую обработку асинхронных операций.•
Pyee подходит для случаев, когда в приложении необходимо реализовать подписку и реагирование на различные события.
🔗 Ссылочка на доку
Стать сотрудником Яндекса быстрее и проще, чем кажется. Участвуйте в днях быстрого найма: решите тестовое, пройдите несколько секций собеседования и получите офер за несколько дней.
Ближайшее мероприятие:
• 9-11 ноября — для продуктовых и аналитиков данных, офер за 3 дня в команды Финтеха и Яндекс Практикума.
Зарегистрироваться
❓ Вопрос на собеседовании
Как работают замыкания (closures) в Python, и как их можно использовать для сохранения состояния между вызовами функции?
Ответ ⬇️
Замыкания позволяют внутренней функции запоминать переменные из объемлющей области видимости даже после завершения работы внешней функции. Это полезно для создания функций с сохраненным состоянием, например, для подсчета числа вызовов.
🗣️ Пример:
def counter():Читать полностью…
count = 0 # Переменная в объемлющей области видимости
def increment():
nonlocal count # Обращаемся к переменной из объемлющей области
count += 1
return count
return increment
# Пример использования
counter1 = counter()
print(counter1()) # 1
print(counter1()) # 2
counter2 = counter()
print(counter2()) # 1
# Результат выполнения:
# 1
# 2
# 1