#python python... PYTHON 🔛 🚀 – Telegram
Forwarded from PyMagic
Forwarded from PyMagic
⚠️ TRY-EXCEPT. Повторяем ошибки и исключения

Привет, друзья! Сегодня мы начнем разговор об ошибках и исключениях в языке python, повторим важные базовые вещи из этой темы. Не буду утверждать, что об этом обязательно спросят на собеседовании, однако знать тему нужно, так как писать и читать код вам придется.

 Очень часто при выполнении программы могут возникать ошибки, из-за которых не смысла останавливать работу всей программы. В таком случае достаточно поймать эту ошибку, обработать и предупредить о ней пользователя. Здесь полезно вспомнить про конструкцию try exсept.

📍 В теле try мы указываем тот код, в котором (как нам кажется) возникнет ошибка. Далее мы используем except и указываем тип возможной ошибки, которая может возникнуть в процессе исполнения тела try. В теле except указываем, что делать или как обработать кейс, если ошибка все же возникла.

Листай картинки с примером кода 👉

⚠️ Давайте вспомним некоторые моменты, которые важно знать при использовании конструкции try exсept.

📍 Если внутри блока try произошло исключение, которое мы не словили блоком except, то использование конструкции не спасет ситуацию и программа упадет полностью.

📍Что делать в таком случае? Попробовать написать еще один except блок, включить в него обработку того исключения, которое не было обработано в первый раз. Тогда исключение будет обработано одним из except блоков, а остальные блоки просто не будут исполняться.  Согласитесь, конструкция в этом случае получается очень громоздкой.

📍 Удобнее было бы ловить одним except блоком сразу несколько типов исключений. Для этого следует передать в except кортеж, содержащий типы этих исключений.

📍 Еще не стоит забывать, что при использовании данной конструкции мы можем поймать сам объект ошибки. Для этого указываем после типа ошибки, который мы ловим, as и имя объекта, который мы бы хотели поймать. Таким образом внутри except блока будет определено имя, в котором будет содержаться объект ошибки.  Полезно посмотреть на тип ошибки, также у ошибки есть атрибут args.

📍 А если мы не знаем какие типы ошибок могут возникнуть во время выполнения программы? Тогда после except не нужно указывать конкретный тип ошибок. Таким образом, если ошибка произойдет, то мы получим сообщение об этом, однако не будет знать какая именно ошибка была обнаружена.
Forwarded from Python | Программирование на Питоне
Forwarded from Python | Программирование на Питоне
Что выведет этот код?
Anonymous Quiz
58%
[[]]
14%
[[...]]
19%
Ошибку
9%
Узнать ответ
🌀 Путь поиска модулей

При импорте модуля с именем spam интерпретатор сначала выполняет поиск встроенного модуля с данным именем. Если файл не найден, выполняется поиск имени файла spam.py в списке каталогов, заданных переменной sys.path. sys.path инициализированы из следующих мест:
— Каталог, содержащий входной сценарий (или текущий каталог, если файл не указан).
PYTHONPATH (список имён каталогов с тем же синтаксисом, что и переменная оболочки PATH).
Зависит от установки по умолчанию.

После инициализации программы Python могут изменить sys.path. Каталог, содержащий выполняемый скрипт, помещается в начало пути поиска перед стандартным путем библиотеки. Это означает, что скрипты в этом каталоге будут загружены вместо одноименных модулей в каталоге библиотеки. Это ошибка, если замена не предназначена.
#python
Forwarded from Zen of Python
36 способов выучить Python бесплатно (для аналитиков и не только)

Ловите подборку полезных бесплатные материалов, которые помогут изучить вам аналитику на Python, а также другие направления разработки:

https://vc.ru/education/519077-36-sposobov-vyuchit-python-besplatno-dlya-analitikov-i-ne-tolko

#подборка
Forwarded from Zen of Python
Настройка Visual Studio Code для Django

VS Code многое умеет уже из коробки, а что не умеет сам предлагает установить. Но с Django слегка иная ситуация. Здесь не работают правильном образом линтеры из коробки, да и mypy вам тут без надобности, если не «поработать напильником».

Но эти проблемы решаются файлами конфигураций соответствующих инструментов, либо готовыми плагинами для mypy и pylint. Вот о последних и пойдёт речь в этой статье:

https://habr.com/ru/post/701800/

#django #vscode
Forwarded from Zen of Python
Как создать успешный пет-проект. Инструкция для будущих «дуровых»

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

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

https://tproger.ru/articles/kak-sozdat-uspeshnyj-pet-proekt-instrukcija-dlja-budushhih-cukerbergov-i-durovyh/
Forwarded from Zen of Python
API-интерфейс Django REST в одном файле

REST API является очень распространённым вариантом использования с Django сегодня. Но такое взаимодействие уместно при большом и сложном API, а вот при маленьком можно обойтись и встроенные в Django инструментами, не создавая лишних файлов и сложностей.

Подробнее об этом:

https://adamj.eu/tech/2020/10/15/a-single-file-rest-api-in-django/

#django #restapi
Forwarded from Zen of Python
Data Science на Python для начинающих

Это видео научит вас почти всему, что вам нужно знать для анализа данных и построения модели машинного обучения. Смотрите в оригинале, с субтитрами или переведите его с помощью Яндекс.

https://youtu.be/BqfM9eeD6KA?list=PL7mOFdpoBB6QiW3_n7aKn_eHTCCftPJLw

#видео #datascience
Forwarded from Zen of Python
Как работать с процессами и потоками в Python

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

https://habr.com/ru/company/simbirsoft/blog/701020/
Forwarded from Big Data Science [RU]
🤔PyPy vs CPython: под капотом Python
Каждый разработчик Python-скриптов знает про CPython — наиболее распространенную реализация виртуальной машины, которая интерпретирует написанный код. Кроме CPython есть также PyPy , построенный с использованием языка RPython. По сравнению с CPython, PyPy работает быстрее, реализуя Python 2.7.18, 3.9.15 и 3.8.15. PyPy поддерживает большинство часто используемых модулей стандартных Python-библиотек. Версия PyPy x86 работает в нескольких операционных системах, таких как Linux (32/64 бита), MacOS (64 бита), Windows (32 бита), OpenBSD, FreeBSD. Версии, отличные от x86, поддерживаются в Linux, а ARM64 — в MacOS.
Впрочем, PyPy не сможет ускорить код в кратковременных процессах, которые запускаются менее чем на пару секунд: JIT-компилятору не хватит времени на «разогрев». Также PyPy не даст выиграша в скорости, если все время выполнения проводится в runtime-библиотеках, т.е. в функциях C, а не в фактическом выполнении Python-кода. Поэтому PyPy работает лучше всего при выполнении долго выполняющихся программ, когда значительная часть времени тратится на выполнение кода Python.
С точки зрения потребления памяти, PyPy также может дать фору CPython: Python-программы с высоким потреблением ОЗУ (сотни МБ и более) могут в конечном итоге занимать меньше места в PyPy, чем в CPython.
https://www.pypy.org/features.html
Зззнатокам Python хитрый вопрос!

Какой тип поставить у параметра field функции print_user_field, чтобы последняя строка при проверке типа показала ошибку? Перечислять второй раз поля User — нельзя, ибо делает возможным рассинхрон имён полей в классе и отдельном их перечислении.

Код скопировать можно здесь.

Вот так это делается на TS

А как на Python, м:)?

#IT #python #typenoscript #codebetter
Почему перечислять второй раз поля — плохо? Потому что возможна ситуация на скриншоте ⬆️ — поле name в User переименовалось в username, а в типах параметра field осталось name. Система проверки типов не покажет ошибку при вызове print_user_name(user, "name"), а хотелось бы ошибку увидеть, так как поля name уже нет.

Почему вынести эту проверку на переданное значение field в блок try/except — плохо? Потому что это уведёт ошибку в runtime, а надо минимизировать ошибки в рантайме, ошибки в рантайме = грустящие пользователи.

Систематических способа минимизировать ошибки в рантайме я знаю два, ТТ — как Тульский Токарев, только Типизация и Тесты.

Оба способа не гарантируют отсутствие ошибок, но позволяют вылавливать какое-то их количество на этапах до рантайма, то есть до пользователей. Чем лучше ТТ, тем меньше ошибок в рантайме.

Можно ли обойтись без типизации? Конечно, драматически увеличив количество тестов и проверок в коде, засорив код этими проверками.

Типизация помогает сократить количество тестов, потому что большой пласт ошибок выявляется на этапе проверки типов.

#python #it #codebetter
Media is too big
VIEW IN TELEGRAM
Работа с базами данных на Python

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

00:00 Введение
00:35 Создание файла базы данных
02:05 Создание таблицы
04:15 Запись данных в таблицу (метод execute)
06:20 Запись массива (метод executemany)
08:00 Как посмотреть содержимое БД
11:52 PRIMARY KEY
13:00 Типизация ячеек
16:25 Чтение из базы данных
21:57 Изменение значений
26:30 Удаление значений
28:20 Удаление таблицы

Смотреть это видео на youtube: youtu.be/siSRd4s7_ro
➡️ Задание от Сбербанка

В этой таблице безымянная частичная выгрузка перемещения пользователей по сайту. Один user_id — один пользователь. Расскажите нам всё, что сможете понять по такой выгрузке

Проведите когортный анализ (за основу для когорты можно взять неделю регистрации), подсчитайте ориентировочный срок жизни клиента/когорты оцените популярность отдельных материалов и форматов

Попробуйте определить общие паттерны у тех пользователей, кто перестал учиться на платформе, и у тех, кто продолжает учиться. Вероятно, на основе этих данных вы сможете сделать предложения по адаптации платформы? Каких данных вам не хватает, чтобы провести более детальный анализ?

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

⭐️ Датасет
🖥 Решение

@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Что такое фабрика декораторов?

Ответ

Это функция, которая возвращает декоратор. Например, вам нужен декоратор для проверки прав. Логика проверки одинакова, но прав может быть много. Чтобы не плодить копипасту, напишем фабрику декораторов.

from functools import wraps

def has_perm(perm):
def decorator(view):
@wraps(view)
def wrapper(request):
if perm in request.user.permissions:
return view(request)
else:
return HTTPRedirect('/login')
return wrapper
return decorator

@has_perm('view_user')
def users(request):
...


@python_job_interview
Please open Telegram to view this post
VIEW IN TELEGRAM