Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
PlatformIO
PlatformIO — это мощная и гибкая платформа с открытым исходным кодом для разработки встроенного ПО, написанная на Python. Она позволяет легко создавать, компилировать, отлаживать и прошивать код для различных микроконтроллеров и плат.
#для_продвинутых
PlatformIO — это мощная и гибкая платформа с открытым исходным кодом для разработки встроенного ПО, написанная на Python. Она позволяет легко создавать, компилировать, отлаживать и прошивать код для различных микроконтроллеров и плат.
#для_продвинутых
SCons
SCons — это современная система сборки программного обеспечения, основанная на Python. Она предназначена для автоматизации процесса компиляции и сборки проектов, делая его более эффективным и надежным.
#для_продвинутых
SCons — это современная система сборки программного обеспечения, основанная на Python. Она предназначена для автоматизации процесса компиляции и сборки проектов, делая его более эффективным и надежным.
#для_продвинутых
Pyppeteer
Pyppeteer — это библиотека для управления браузером с помощью Python с использованием инструмента Puppeteer, который изначально был разработан для Node.js. Puppeteer позволяет автоматизировать взаимодействие с веб-страницами, выполнять сценарии на основе браузера, выполнять скриншоты, создавать PDF-файлы и многое другое.
Pyppeteer предоставляет Python-интерфейс для работы с Puppeteer, и, таким образом, позволяет разработчикам использовать мощные инструменты. Это особенно полезно для автоматизации тестирования веб-приложений, сбора данных с веб-сайтов и других сценариев, требующих взаимодействия с браузером.
#для_продвинутых
Pyppeteer — это библиотека для управления браузером с помощью Python с использованием инструмента Puppeteer, который изначально был разработан для Node.js. Puppeteer позволяет автоматизировать взаимодействие с веб-страницами, выполнять сценарии на основе браузера, выполнять скриншоты, создавать PDF-файлы и многое другое.
Pyppeteer предоставляет Python-интерфейс для работы с Puppeteer, и, таким образом, позволяет разработчикам использовать мощные инструменты. Это особенно полезно для автоматизации тестирования веб-приложений, сбора данных с веб-сайтов и других сценариев, требующих взаимодействия с браузером.
#для_продвинутых
VisPy
VisPy — это библиотека для визуализации данных в Python, предназначенная для создания высокопроизводительных интерактивных визуализаций. Она использует библиотеку OpenGL для рендеринга и обеспечивает доступ к графическим возможностям вашего компьютера через современный Python API.
После установки библиотеки, вы можете создать графические приложения с использованием VisPy. В примере на картинке создается окно с красным треугольником. VisPy предоставляет широкие возможности для создания 2D и 3D визуализаций, а также возможность работы с пользовательским вводом, анимациями и интерактивностью.
Вы можете найти дополнительные примеры и документацию на официальном сайте VisPy, чтобы более подробно изучить возможности этой библиотеки и начать создавать собственные визуализации.
#для_продвинутых
VisPy — это библиотека для визуализации данных в Python, предназначенная для создания высокопроизводительных интерактивных визуализаций. Она использует библиотеку OpenGL для рендеринга и обеспечивает доступ к графическим возможностям вашего компьютера через современный Python API.
После установки библиотеки, вы можете создать графические приложения с использованием VisPy. В примере на картинке создается окно с красным треугольником. VisPy предоставляет широкие возможности для создания 2D и 3D визуализаций, а также возможность работы с пользовательским вводом, анимациями и интерактивностью.
Вы можете найти дополнительные примеры и документацию на официальном сайте VisPy, чтобы более подробно изучить возможности этой библиотеки и начать создавать собственные визуализации.
#для_продвинутых
Метод isspace()
Метод
Примечание:
#для_начинающих
Метод
isspace() — это строковый метод, который используется для проверки, состоит ли строка только из пробельных символов (пробелов, символов табуляции, символов новой строки и других символов, которые считаются «пробельными» в контексте языка Python).Примечание:
isspace() не изменяет исходную строку, а просто возвращает булево значение в зависимости от условия.#для_начинающих
pgeocode
После выполнения этого кода, вы получите информацию о местоположении, связанную с указанным почтовым индексом, включая штат, город, широту и долготу и другие данные, если они доступны.
#для_продвинутых
pgeocode — это библиотека Python, которая предоставляет инструменты для выполнения геокодирования и получения информации о географических местоположениях на основе почтовых индексов (ZIP-кодов) или кодов страны. Это полезно, если вам необходимо преобразовать почтовые индексы в информацию о местоположении, такую как название страны, штата и т. д.После выполнения этого кода, вы получите информацию о местоположении, связанную с указанным почтовым индексом, включая штат, город, широту и долготу и другие данные, если они доступны.
#для_продвинутых
#вопросы_с_собеседований
Для чего используются метаклассы?
Метаклассы используются для создания классов и позволяют изменять поведение класса, модифицировать процесс его создания.
Основные случаи использования метаклассов:
— Реализация паттернов проектирования, таких как Singleton, Factory Method и другие.
— Проверка типов. Метакласс может валидировать атрибуты класса, параметры методов, выполнять инъекцию зависимостей.
— Регистрация классов. С помощью метакласса можно автоматически регистрировать создаваемые классы, например, в глобальном реестре.
— Создание протоколов и интерфейсов, похожих на языки, подобные Protocol Buffers.
— Логирование и трассировка. Метакласс позволяет следить за созданием класса и вызовами его методов.
— Расширение класса дополнительным функционалом. Добавление методов к классу через метакласс.
Для чего используются метаклассы?
Основные случаи использования метаклассов:
— Реализация паттернов проектирования, таких как Singleton, Factory Method и другие.
— Проверка типов. Метакласс может валидировать атрибуты класса, параметры методов, выполнять инъекцию зависимостей.
— Регистрация классов. С помощью метакласса можно автоматически регистрировать создаваемые классы, например, в глобальном реестре.
— Создание протоколов и интерфейсов, похожих на языки, подобные Protocol Buffers.
— Логирование и трассировка. Метакласс позволяет следить за созданием класса и вызовами его методов.
— Расширение класса дополнительным функционалом. Добавление методов к классу через метакласс.
Наткнулся на классную новость для тех, кто делает опенсорс 🚀
GitVerse (СберТех), Cloud. ru и Хабр запустили грантовую программу «Код без границ». И это не просто деньги, а полноценная поддержка проектов:
💰 финансирование для команды и железа
☁️ облачные мощности
👥 сообщество и эксперты рядом
Зачем участвовать?
— можно подтянуть свой проект и получить обратную связь от комьюнити;
— найти единомышленников или даже собрать команду;
— ну и, конечно, заявить о себе всей ИТ-тусовке.
Условия максимально простые:
1️⃣ разместить проект на GitVerse (можно импортировать с GitHub или другой платформы);
2️⃣ делиться кодом и черпать идеи у других.
Есть четыре номинации:
• AI-инновации
• Наука и образование
• Проекты для всех
• Разработка для разработчиков
⏳ Дедлайны: заявки принимают с 3 сентября по 31 октября. В ноябре — отбор, а в декабре объявят результаты.
Хватит кодить в стол — пора рассказать миру о своем проекте!
👉 Подробности и заявка
GitVerse (СберТех), Cloud. ru и Хабр запустили грантовую программу «Код без границ». И это не просто деньги, а полноценная поддержка проектов:
💰 финансирование для команды и железа
☁️ облачные мощности
👥 сообщество и эксперты рядом
Зачем участвовать?
— можно подтянуть свой проект и получить обратную связь от комьюнити;
— найти единомышленников или даже собрать команду;
— ну и, конечно, заявить о себе всей ИТ-тусовке.
Условия максимально простые:
1️⃣ разместить проект на GitVerse (можно импортировать с GitHub или другой платформы);
2️⃣ делиться кодом и черпать идеи у других.
Есть четыре номинации:
• AI-инновации
• Наука и образование
• Проекты для всех
• Разработка для разработчиков
⏳ Дедлайны: заявки принимают с 3 сентября по 31 октября. В ноябре — отбор, а в декабре объявят результаты.
Хватит кодить в стол — пора рассказать миру о своем проекте!
👉 Подробности и заявка
tell()
Метод
При открытии файла указатель текущей позиции находится в начале. По мере чтения/записи он смещается.
Чтобы узнать текущее значение этого смещения, применяется метод
Это позволяет:
— Узнать размер файла, сравнив позицию после чтения с начальной.
— Вернуться к определенной позиции с помощью
— Отслеживать прогресс обработки больших файлов.
— Получить позицию в строковых буферах и потоках байтов.
Метод
Метод
tell() используется для получения текущей позиции (смещения) при работе с файлами и файлоподобными объектами.При открытии файла указатель текущей позиции находится в начале. По мере чтения/записи он смещается.
Чтобы узнать текущее значение этого смещения, применяется метод
tell().Это позволяет:
— Узнать размер файла, сравнив позицию после чтения с начальной.
— Вернуться к определенной позиции с помощью
seek().— Отслеживать прогресс обработки больших файлов.
— Получить позицию в строковых буферах и потоках байтов.
Метод
tell() возвращает текущую позицию в файле в байтах от начала.raise
Конструкция
Когда в коде происходит что-то непредвиденное или некорректное — можно сгенерировать исключение командой
Например:
После генерации исключения выполнение текущего кода прерывается и происходит переход в блок try/except для обработки этой ошибки.
Если исключение не будет обработано — программа завершится с ошибкой.
В этом примере функция
Конструкция
raise используется для генерации исключений.Когда в коде происходит что-то непредвиденное или некорректное — можно сгенерировать исключение командой
raise.Например:
raise ValueError('Invalid value')
Здесь мы генерируем исключение ValueError с сообщением об ошибке.После генерации исключения выполнение текущего кода прерывается и происходит переход в блок try/except для обработки этой ошибки.
Если исключение не будет обработано — программа завершится с ошибкой.
В этом примере функция
calculate_discount проверяет входные данные. Если скидка меньше 0 или больше 100 — с помощью raise генерируется исключение ValueError с сообщением.Оператор pass
Оператор
Она может применяться в следующих ситуациях:
— Заглушка для незавершенных блоков кода. Если написано только определение функции или класса, но нет тела - можно вставить
— Пустые блоки в циклах. Вместо тела цикла можно написать
— Пропускать блоки кода в условных конструкциях. Если в ветви if-else ничего делать не нужно, можно использовать
— Создание абстрактных базовых классов и заготовок методов, которые будут переопределены позже в подклассах.
— Обозначение функций или классов, которые планируется реализовать в будущем.
Как видно из примера, все числа от 0 до 9 выводятся кроме 5.
#это_база
Оператор
pass — это особая конструкция, которая не делает ничего. Она может применяться в следующих ситуациях:
— Заглушка для незавершенных блоков кода. Если написано только определение функции или класса, но нет тела - можно вставить
pass, чтобы код был допустимым синтаксически.— Пустые блоки в циклах. Вместо тела цикла можно написать
pass, если на данном этапе нет необходимости выполнять какие-либо действия. — Пропускать блоки кода в условных конструкциях. Если в ветви if-else ничего делать не нужно, можно использовать
pass.— Создание абстрактных базовых классов и заготовок методов, которые будут переопределены позже в подклассах.
— Обозначение функций или классов, которые планируется реализовать в будущем.
Как видно из примера, все числа от 0 до 9 выводятся кроме 5.
#это_база
Тернарный оператор
Тернарный оператор — это оператор, позволяющий записать условную конструкцию if-else в одну строку.
Тернарный оператор часто используется для условного присваивания значений переменной, выбора между двумя вариантами в одну строку.
Он позволяет сократить и упростить запись условных выражений. Однако не рекомендуется использовать вложенные конструкции, т. к. это ухудшает читаемость.
В данном примере тернарный оператор используется:
— Для вывода одной из двух фраз в зависимости от условия
— Для присваивания переменной
#это_база
Тернарный оператор — это оператор, позволяющий записать условную конструкцию if-else в одну строку.
Тернарный оператор часто используется для условного присваивания значений переменной, выбора между двумя вариантами в одну строку.
Он позволяет сократить и упростить запись условных выражений. Однако не рекомендуется использовать вложенные конструкции, т. к. это ухудшает читаемость.
В данном примере тернарный оператор используется:
— Для вывода одной из двух фраз в зависимости от условия
a > b.— Для присваивания переменной
result одного из двух значений в зависимости от четности a.#это_база
#вопросы_с_собеседований
Зачем нужен wraps?
Декоратор functools.wraps используется для того, чтобы сохранить информацию о функции-оригинале при создании декоратора.
Когда мы создаем декоратор, он заменяет оригинальную функцию на обернутую. При этом теряется информация о названии функции, docstring и другие атрибуты.
Используя wraps, мы можем сохранить эти атрибуты. Таким образом декорированная функция будет выглядеть как оригинальная для программиста.
Это полезно для отладки и понимания кода. Например, при просмотре стека вызовов будет видно оригинальное имя функции, а не имя декоратора. При использовании help() будет выведен нужный docstring.
Зачем нужен wraps?
Когда мы создаем декоратор, он заменяет оригинальную функцию на обернутую. При этом теряется информация о названии функции, docstring и другие атрибуты.
Используя wraps, мы можем сохранить эти атрибуты. Таким образом декорированная функция будет выглядеть как оригинальная для программиста.
Это полезно для отладки и понимания кода. Например, при просмотре стека вызовов будет видно оригинальное имя функции, а не имя декоратора. При использовании help() будет выведен нужный docstring.
#вопросы_с_собеседований
Для чего могут применять конструкцию try finally без except?
Конструкция try-finally без блока except может применяться в следующих случаях:
— Для закрытия файлов после работы с ними, даже если произошла ошибка.
— Для освобождения ресурсов, таких как сетевые соединения или блокировки.
— Для отмены каких-либо длительных операций или процессов в случае прерывания работы программы. Например, отмена запущенных потоков.
— Для логирования или уведомления о завершении блока кода, даже если в нем произошла ошибка.
— Для выполнения необходимой логики по завершении работы блока кода вне зависимости от результата, например сброс счетчиков.
Для чего могут применять конструкцию try finally без except?
— Для закрытия файлов после работы с ними, даже если произошла ошибка.
— Для освобождения ресурсов, таких как сетевые соединения или блокировки.
— Для отмены каких-либо длительных операций или процессов в случае прерывания работы программы. Например, отмена запущенных потоков.
— Для логирования или уведомления о завершении блока кода, даже если в нем произошла ошибка.
— Для выполнения необходимой логики по завершении работы блока кода вне зависимости от результата, например сброс счетчиков.
Переименование файлов в Python
rename() — это функция из модуля os, которая позволяет переименовывать файлы и директории.
Используется для переименования файлов и директорий на файловой системе. Принимает два аргумента - старое имя и новое имя и атомарно переименовывает файл за одну операцию.
Также позволяет перемещать файлы между разными директориями.
#это_база
rename() — это функция из модуля os, которая позволяет переименовывать файлы и директории.
Используется для переименования файлов и директорий на файловой системе. Принимает два аргумента - старое имя и новое имя и атомарно переименовывает файл за одну операцию.
Также позволяет перемещать файлы между разными директориями.
#это_база
whylogs
whylogs — это библиотека для мониторинга и аудита машинного обучения.
Она помогает делать ML системы более прозрачными, стабильными и надёжными за счёт постоянного мониторинга и аудита.
Она используется для того, чтобы:
— Отслеживать статистику и метрики моделей и данных в режиме реального времени.
— Выявлять дрейф данных - изменения в распределении данных со временем.
— Собирать примеры исключений и выбросов.
— Проводить аудит моделей и данных в поисках проблем.
— Генерировать автоматические отчёты и визуализации.
— Интегрировать с MLflow, TensorBoard и другими инструментами.
whylogs — это библиотека для мониторинга и аудита машинного обучения.
Она помогает делать ML системы более прозрачными, стабильными и надёжными за счёт постоянного мониторинга и аудита.
Она используется для того, чтобы:
— Отслеживать статистику и метрики моделей и данных в режиме реального времени.
— Выявлять дрейф данных - изменения в распределении данных со временем.
— Собирать примеры исключений и выбросов.
— Проводить аудит моделей и данных в поисках проблем.
— Генерировать автоматические отчёты и визуализации.
— Интегрировать с MLflow, TensorBoard и другими инструментами.
Duck typing (утиная типизация)
Duck typing — это концепция, позволяющая использовать объекты независимо от их типа, базируясь на их свойствах и методах.
Основная идея — не проверять тип объекта напрямую, а пытаться использовать его так, как нам нужно.
Преимущества:
— Нет необходимости привязываться к конкретным классам и типам.
— Код становится более гибким и менее связанным.
— Легче расширять и изменять код, добавляя новые типы.
— Упрощает полиморфизм.
Duck typing — это концепция, позволяющая использовать объекты независимо от их типа, базируясь на их свойствах и методах.
Основная идея — не проверять тип объекта напрямую, а пытаться использовать его так, как нам нужно.
Преимущества:
— Нет необходимости привязываться к конкретным классам и типам.
— Код становится более гибким и менее связанным.
— Легче расширять и изменять код, добавляя новые типы.
— Упрощает полиморфизм.
Атрибуты объектов
Атрибуты — это переменные, связанные с объектом класса и хранящие его данные.
Они объявляются внутри класса, а доступ к атрибутам происходит через точку после объекта (object.attr). Бывают public, приватными (__attr) и защищенными (_attr). Публичные атрибуты доступны везде, приватные только в классе, защищенные в классе и дочерних.
Значение по умолчанию None, если не задано другое.
Атрибуты можно создать в конструкторе init() и изменить в методах класса, а новые атрибуты к объектам можно добавлять в рантайме.
#это_база
Атрибуты — это переменные, связанные с объектом класса и хранящие его данные.
Они объявляются внутри класса, а доступ к атрибутам происходит через точку после объекта (object.attr). Бывают public, приватными (__attr) и защищенными (_attr). Публичные атрибуты доступны везде, приватные только в классе, защищенные в классе и дочерних.
Значение по умолчанию None, если не задано другое.
Атрибуты можно создать в конструкторе init() и изменить в методах класса, а новые атрибуты к объектам можно добавлять в рантайме.
#это_база