Summarize300Bot, [Dec 5, 2024 at 12:13]
• Ошибки могут возникать без необходимости их отлавливатьLink
• Упрощение обслуживания и чтения кода
• Лучший контроль над реакцией приложения на ошибкиLink
Различия между ошибками в разработке и производстве
• В разработке приложение может выходить из строя для отладкиLink
• В производстве приложение должно быть безупречнымLink
• Обработка ошибок должна быть в одном месте и отдельно от логики приложенияLink
Пример с командной строкой
• В режиме разработки повторно вызываются исключения для отладкиLink
• Рабочая версия продолжает отслеживать ошибки и предотвращать сбоиLink
• Логике приложения не нужно знать о различиях в конфигурацииLink
Сравнение с веб-фреймворками
• Многие веб-фреймворки имеют режим разработки или отладкиLink
• Решение, показанное в CLI-приложении, применимо к веб-приложениямLink
Вывод
• Статья учит лучше писать код для обработки ошибокLink
• Ошибки могут возникать без необходимости их отлавливатьLink
• Упрощение обслуживания и чтения кода
• Лучший контроль над реакцией приложения на ошибкиLink
Различия между ошибками в разработке и производстве
• В разработке приложение может выходить из строя для отладкиLink
• В производстве приложение должно быть безупречнымLink
• Обработка ошибок должна быть в одном месте и отдельно от логики приложенияLink
Пример с командной строкой
• В режиме разработки повторно вызываются исключения для отладкиLink
• Рабочая версия продолжает отслеживать ошибки и предотвращать сбоиLink
• Логике приложения не нужно знать о различиях в конфигурацииLink
Сравнение с веб-фреймворками
• Многие веб-фреймворки имеют режим разработки или отладкиLink
• Решение, показанное в CLI-приложении, применимо к веб-приложениямLink
Вывод
• Статья учит лучше писать код для обработки ошибокLink
Summarize300Bot, [Dec 5, 2024 at 12:13]
• При возникновении вопросов можно обращаться за помощью
• При возникновении вопросов можно обращаться за помощью
Summarize300Bot, [Dec 5, 2024 at 12:13]
Полное руководство по обработке ошибок в Python
Основы обработки ошибок в Python
• Существует два основных стиля обработки ошибок: LBYL и EAFP.Link
• LBYL требует проверки условий перед выполнением действия, что сложно и подвержено ошибкам.Link
• EAFP выполняет действие и устраняет ошибки, что предпочтительнее в большинстве случаев.Link
Проблемы с LBYL
• LBYL требует знания всех возможных причин ошибок, что сложно.Link
• Возможны условия гонки при проверке условий перед выполнением действия.Link
Преимущества EAFP
• EAFP позволяет целевой функции проверять ошибки и сообщать о них.Link
• Важно знать, какие исключения перехватывать, чтобы избежать сбоев.Link
Обработка ошибок в реальном мире
• Ошибки можно классифицировать по происхождению и исправимости.Link
• Новые ошибки возникают в коде, который должен их обработать.Link
• Всплывающие ошибки возникают из-за вызовов функций.Link
Типы ошибок и их обработка
• Исправимые ошибки можно исправить и продолжить работу.Link
• Неустранимые ошибки требуют прерывания выполнения кода.
Полное руководство по обработке ошибок в Python
Основы обработки ошибок в Python
• Существует два основных стиля обработки ошибок: LBYL и EAFP.Link
• LBYL требует проверки условий перед выполнением действия, что сложно и подвержено ошибкам.Link
• EAFP выполняет действие и устраняет ошибки, что предпочтительнее в большинстве случаев.Link
Проблемы с LBYL
• LBYL требует знания всех возможных причин ошибок, что сложно.Link
• Возможны условия гонки при проверке условий перед выполнением действия.Link
Преимущества EAFP
• EAFP позволяет целевой функции проверять ошибки и сообщать о них.Link
• Важно знать, какие исключения перехватывать, чтобы избежать сбоев.Link
Обработка ошибок в реальном мире
• Ошибки можно классифицировать по происхождению и исправимости.Link
• Новые ошибки возникают в коде, который должен их обработать.Link
• Всплывающие ошибки возникают из-за вызовов функций.Link
Типы ошибок и их обработка
• Исправимые ошибки можно исправить и продолжить работу.Link
• Неустранимые ошибки требуют прерывания выполнения кода.
Summarize300Bot, [Dec 5, 2024 at 12:13]
Link
Классификация ошибок
• Ошибки делятся на новые и всплывающие.Link
• Новые ошибки генерируются самим кодом, всплывающие — вызванными функциями.Link
• Ошибки могут быть восстанавливаемыми или невосстанавливаемыми.Link
Обработка новых восстанавливаемых ошибок
• Код может самостоятельно восстановиться от ошибки и продолжить выполнение.Link
• Пример: запись песни в базу данных с неизвестным годом выпуска.Link
Обработка всплывающих восстанавливаемых ошибок
• Ошибка всплыла из вызванной функции, но код может восстановиться от неё.Link
Обработка ошибок типа 1: восстанавливаемые ошибки
Link
Классификация ошибок
• Ошибки делятся на новые и всплывающие.Link
• Новые ошибки генерируются самим кодом, всплывающие — вызванными функциями.Link
• Ошибки могут быть восстанавливаемыми или невосстанавливаемыми.Link
Обработка новых восстанавливаемых ошибок
• Код может самостоятельно восстановиться от ошибки и продолжить выполнение.Link
• Пример: запись песни в базу данных с неизвестным годом выпуска.Link
Обработка всплывающих восстанавливаемых ошибок
• Ошибка всплыла из вызванной функции, но код может восстановиться от неё.Link
Обработка ошибок типа 1: восстанавливаемые ошибки
Summarize300Bot, [Dec 5, 2024 at 12:13]
Link
Перехват всех исключений
• Перехват всех исключений на верхнем уровне предотвращает вылет приложенияLink
• Пример: Flask и Tkinter перехватывают все исключения на верхнем уровнеLink
Пример улучшения кода
• Использование Flask-SQLAlchemy для обработки ошибок баз данныхLink
• Пример: route записывает сообщение об ошибке и откатывает сессию базы данных
Link
Перехват всех исключений
• Перехват всех исключений на верхнем уровне предотвращает вылет приложенияLink
• Пример: Flask и Tkinter перехватывают все исключения на верхнем уровнеLink
Пример улучшения кода
• Использование Flask-SQLAlchemy для обработки ошибок баз данныхLink
• Пример: route записывает сообщение об ошибке и откатывает сессию базы данных
Summarize300Bot, [Dec 5, 2024 at 12:13]
• Код знает, как восстановиться после ошибки и продолжить работуLink
• Используется EAFP для перехвата ошибки и восстановленияLink
Обработка ошибок типа 2: невосстанавливаемые ошибки
• Код не знает, как восстановиться, но может отправить уведомление об ошибкеLink
• Используется исключение для уведомления вызывающей стороныLink
Обработка ошибок типа 3: всплывающие невосстанавливаемые ошибки
• Код не знает, как восстановить, но позволяет ошибке всплыватьLink
• Ничего не делается, чтобы ошибка достигла уровня, где её можно обработать
• Код знает, как восстановиться после ошибки и продолжить работуLink
• Используется EAFP для перехвата ошибки и восстановленияLink
Обработка ошибок типа 2: невосстанавливаемые ошибки
• Код не знает, как восстановиться, но может отправить уведомление об ошибкеLink
• Используется исключение для уведомления вызывающей стороныLink
Обработка ошибок типа 3: всплывающие невосстанавливаемые ошибки
• Код не знает, как восстановить, но позволяет ошибке всплыватьLink
• Ничего не делается, чтобы ошибка достигла уровня, где её можно обработать
Summarize300Bot, [Dec 5, 2024 at 12:13]
Link
• В продакшене приложение перехватывает все ошибки и предотвращает вылеты.Link
• Логике приложения не нужно знать о различиях конфигурации.Link
Реализация в веб-фреймворках
• Многие веб-фреймворки имеют режим разработки или отладки.Link
• Отображение вылетов в консоли или веб-браузере.Link
• Решение, показанное на примере CLI-приложения, реализовано в веб-приложениях.
Link
• В продакшене приложение перехватывает все ошибки и предотвращает вылеты.Link
• Логике приложения не нужно знать о различиях конфигурации.Link
Реализация в веб-фреймворках
• Многие веб-фреймворки имеют режим разработки или отладки.Link
• Отображение вылетов в консоли или веб-браузере.Link
• Решение, показанное на примере CLI-приложения, реализовано в веб-приложениях.
Summarize300Bot, [Dec 5, 2024 at 12:13]
Link
• Удобство управления реакциями приложения на ошибки.Link
• Возможность изменения поведения в конфигурациях продакшена и разработки.Link
Пример CLI-приложения
• В режиме разработки приложение вылетает для отображения ошибок и трассировок стека.
Link
• Удобство управления реакциями приложения на ошибки.Link
• Возможность изменения поведения в конфигурациях продакшена и разработки.Link
Пример CLI-приложения
• В режиме разработки приложение вылетает для отображения ошибок и трассировок стека.
Summarize300Bot, [Dec 5, 2024 at 12:13]
Link
Обработка ошибок в Flask
• Flask перехватывает все ошибки и записывает их в лог.Link
• Возвращает клиенту ошибку 500 при возникновении ошибки.Link
• Расширение Flask-SQLAlchemy откатывает сессию при ошибке базы данных.Link
Преимущества перемещения логики обработки ошибок
• Повышение удобства поддержки и читаемости кода.
Link
Обработка ошибок в Flask
• Flask перехватывает все ошибки и записывает их в лог.Link
• Возвращает клиенту ошибку 500 при возникновении ошибки.Link
• Расширение Flask-SQLAlchemy откатывает сессию при ошибке базы данных.Link
Преимущества перемещения логики обработки ошибок
• Повышение удобства поддержки и читаемости кода.
Forwarded from Data Советы
✅🖥 Pydantic vs. Attrs
Pydantic имеет встроенную функцию для проверки данных, но она использует много памяти.
Attrs не имеет встроенной проверки данных, но обеспечивает лучшую производительность и меньшее потребление памяти, что делает его идеальным для внутренних структур данных и простого создания классов в Python.
📌 Пример (https://codecut.ai/python-data-models-pydantic-or-attrs)
#python
Pydantic имеет встроенную функцию для проверки данных, но она использует много памяти.
Attrs не имеет встроенной проверки данных, но обеспечивает лучшую производительность и меньшее потребление памяти, что делает его идеальным для внутренних структур данных и простого создания классов в Python.
from attrs import define, field
@define
class UserAttrs:
name: str
age: int = field()
@age.validator
def check_age(self, attribute, value):
if value < 0:
raise ValueError("Возраст не может быть отрицательным")
return value # принимает любой положительный возраст
try:
user = UserAttrs(name="Bob", age=-1)
except ValueError as e:
print("ValueError:", e)
📌 Пример (https://codecut.ai/python-data-models-pydantic-or-attrs)
#python
Forwarded from Иван
Black? Если вкратце, то что это? А то будет тяжеловато сформировать вопрос в Гугле/чатгпт на основе "black"
Forwarded from Николай Крупий
Иван
Black? Если вкратце, то что это? А то будет тяжеловато сформировать вопрос в Гугле/чатгпт на основе "black"
Учись)
- https://chatgpt.com/share/67a1b96c-82a8-8009-b207-2ca96f740405
И isort сразу добавь.
Ну, кстати, давай уж и #mypy сразу осилить попробуй!) Вообще
- тема типизации в питон и вообще в любых других ЯП очень большая, сложная и не однозначная
- в питоне типизация опциональная (не обязательная), в отличие от многих других ЯП
- но в целом они все (ранее не «типизированные» ЯП) движутся к ней (напр, js -> ts)
- и тебе она может сначала показаться какой-то излишней
- но на всех больших и серьёзных проектах сейчас принято её использовать!
- поэтому лучше уже сейчас начать с ней разбираться
- тем более что у тебя очень простой проект, и начать с него будет отличным вариантом!
- со временем к тебе начнёт приходить и полезность типизации😁
- поГПТи на эту тему самостоятельно
#типизация (правильнее говорить «аннотации типов») в #python
- https://chatgpt.com/share/67a1b96c-82a8-8009-b207-2ca96f740405
И isort сразу добавь.
Ну, кстати, давай уж и #mypy сразу осилить попробуй!) Вообще
- тема типизации в питон и вообще в любых других ЯП очень большая, сложная и не однозначная
- в питоне типизация опциональная (не обязательная), в отличие от многих других ЯП
- но в целом они все (ранее не «типизированные» ЯП) движутся к ней (напр, js -> ts)
- и тебе она может сначала показаться какой-то излишней
- но на всех больших и серьёзных проектах сейчас принято её использовать!
- поэтому лучше уже сейчас начать с ней разбираться
- тем более что у тебя очень простой проект, и начать с него будет отличным вариантом!
- со временем к тебе начнёт приходить и полезность типизации
- поГПТи на эту тему самостоятельно
#типизация (правильнее говорить «аннотации типов») в #python
Please open Telegram to view this post
VIEW IN TELEGRAM
ChatGPT
ChatGPT - Black настройка и интеграция
Shared via ChatGPT
Forwarded from Python — вакансии и стажировки
🚀 Полезные библиотеки Python
PassivBot — бесплатный бот для торговли криптовалютой на популярных биржах с открытым исходным кодом. Бот написан на Python и требует минимального вмешательства пользователя.
📈 Так как цены на биржах постоянно скачут вверх-вниз — цель бота автоматизировать процесс извлечения выгоды с таких сделок. Работает на спотовых или фьючерсных рынках, прослушивая текущие сделки через веб-сокет, автоматически создавая и отменяя лимитные ордера на покупку и продажу.
🤖 Бота также можно смоделировать на исторических данных о ценах с помощью встроенного бэктестера. Включен оптимизатор, который находит лучшие конфигурации путем повторения тысяч бэктестов с разными кандидатами.
Работает с:
- Bybit
- Binance
- OKX
- Kucoin
- Bitget
🌐 GitHub/Инструкция
@pythonpythonjobs
PassivBot — бесплатный бот для торговли криптовалютой на популярных биржах с открытым исходным кодом. Бот написан на Python и требует минимального вмешательства пользователя.
📈 Так как цены на биржах постоянно скачут вверх-вниз — цель бота автоматизировать процесс извлечения выгоды с таких сделок. Работает на спотовых или фьючерсных рынках, прослушивая текущие сделки через веб-сокет, автоматически создавая и отменяя лимитные ордера на покупку и продажу.
🤖 Бота также можно смоделировать на исторических данных о ценах с помощью встроенного бэктестера. Включен оптимизатор, который находит лучшие конфигурации путем повторения тысяч бэктестов с разными кандидатами.
Работает с:
- Bybit
- Binance
- OKX
- Kucoin
- Bitget
🌐 GitHub/Инструкция
@pythonpythonjobs
Forwarded from Python — вакансии и стажировки
🚀Cookiecutter — это кроссплатформенный инструмент командной строки для быстрого создания проектов на основе шаблонов!
🦾Он используется для генерации проектов в различных языках программирования, включая Python, C и другие, упрощая настройку стандартных структур каталогов и файлов.
🎓Cookiecutter позволяет создавать проекты, используя как удалённые шаблоны (например, из GitHub), так и локальные, без необходимости знаний Python. Инструмент поддерживает пользовательские параметры, расширяемость, работу с любым форматом файлов, а также интеграцию с pipx для удобной установки.
✅Лицензия: BSD-3-Clause
🌐Github
@pythonpythonjobs
🦾Он используется для генерации проектов в различных языках программирования, включая Python, C и другие, упрощая настройку стандартных структур каталогов и файлов.
🎓Cookiecutter позволяет создавать проекты, используя как удалённые шаблоны (например, из GitHub), так и локальные, без необходимости знаний Python. Инструмент поддерживает пользовательские параметры, расширяемость, работу с любым форматом файлов, а также интеграцию с pipx для удобной установки.
✅Лицензия: BSD-3-Clause
🌐Github
@pythonpythonjobs
Forwarded from Python — вакансии и стажировки
🚀Plumbum — библиотека для Python, которая упрощает выполнение команд в стиле shell и их обработку в коде!
🎓Эта библиотека предоставляет интерфейсы для выполнения системных команд, построения конвейеров (pipelines), управления процессами и работы с удалёнными серверами через SSH. Plumbum задуман как мощный инструмент для автоматизации задач, объединяя понятный синтаксис Python и функциональность shell.
🦾Основные возможности Plumbum:
✅Вызов системных команд: Команды представляются как объекты, которые можно вызывать, передав параметры так, как это делается в командной строке.
✅Пайплайны и перенаправление ввода/вывода: Поддержка гибкого перенаправления стандартных потоков и построения пайплайнов.
✅SSH-интерфейс: Управление удалёнными хостами через SSH, включая выполнение команд на удалённой машине.
✅Локальные и удалённые команды: Возможность однородного вызова локальных и удалённых команд.
✅Обработка ошибок: Исключения для различных ошибок выполнения команд.
🌐Github
@pythonpythonjobs
🎓Эта библиотека предоставляет интерфейсы для выполнения системных команд, построения конвейеров (pipelines), управления процессами и работы с удалёнными серверами через SSH. Plumbum задуман как мощный инструмент для автоматизации задач, объединяя понятный синтаксис Python и функциональность shell.
🦾Основные возможности Plumbum:
✅Вызов системных команд: Команды представляются как объекты, которые можно вызывать, передав параметры так, как это делается в командной строке.
✅Пайплайны и перенаправление ввода/вывода: Поддержка гибкого перенаправления стандартных потоков и построения пайплайнов.
✅SSH-интерфейс: Управление удалёнными хостами через SSH, включая выполнение команд на удалённой машине.
✅Локальные и удалённые команды: Возможность однородного вызова локальных и удалённых команд.
✅Обработка ошибок: Исключения для различных ошибок выполнения команд.
🌐Github
@pythonpythonjobs
Forwarded from Python — вакансии и стажировки
🚀Lets-Plot: мощная библиотека для визуализации данных на Python
Lets-Plot — библиотека от JetBrains, созданная на основе принципов Grammar of Graphics, как и знаменитая ggplot2 для R.
Особенности и преимущества:
- Мультиплатформенность: Lets-Plot работает как в блокнотах Python (Jupyter, Datalore, Kaggle и др.), так и в IDE PyCharm и IntelliJ IDEA.
- Интерактивные возможности: Поддержка интерактивных карт с возможностью увеличения и перемещения, а также кастомизация подсказок и аннотаций.
- Геопространственная визуализация: Простая интеграция с GeoDataFrame и мощный модуль геокодирования.
- Экспорт графиков: Сохранение графиков в формате SVG, HTML, PNG и PDF с помощью функций
- Поддержка режима без JavaScript и оффлайн-режима: Lets-Plot генерирует графики как простые SVG-изображения, что обеспечивает работу без Интернет-соединения.
🌐GitHub
@pythonpythonjobs
Lets-Plot — библиотека от JetBrains, созданная на основе принципов Grammar of Graphics, как и знаменитая ggplot2 для R.
Особенности и преимущества:
- Мультиплатформенность: Lets-Plot работает как в блокнотах Python (Jupyter, Datalore, Kaggle и др.), так и в IDE PyCharm и IntelliJ IDEA.
- Интерактивные возможности: Поддержка интерактивных карт с возможностью увеличения и перемещения, а также кастомизация подсказок и аннотаций.
- Геопространственная визуализация: Простая интеграция с GeoDataFrame и мощный модуль геокодирования.
- Экспорт графиков: Сохранение графиков в формате SVG, HTML, PNG и PDF с помощью функций
ggsave(), to_noscript(), to_html(), to_png() и to_pdf().- Поддержка режима без JavaScript и оффлайн-режима: Lets-Plot генерирует графики как простые SVG-изображения, что обеспечивает работу без Интернет-соединения.
🌐GitHub
@pythonpythonjobs