def divide(x=1, y=0):
try:
return x / y
except ZeroDivisionError:
raise ValueError("Pattern 3 error.") from None
divide()
Здесь при вызове функции
divide()
она вызывается с параметрами по умолчанию, то есть x=1
, y=0
, в общем происходит деление на 0, и мы попадаем в ветку except ZeroDivisionError
. Если бы мы не написали
from None
, в поднявшемся исключении встречалась бы ошибка ZeroDivisionError
. В данном случае трассировка не будет включать исходную ошибку
ZeroDivisionError
, а только исключение ValueError
и сообщение об ошибке — всё из-за from None
.from None
, когда вы хотите скрыть от пользователя детали исходного исключения или внутреннее исключение используемой библиотеки.Вот такие дела
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥7❤3😱1
Flect — это фреймворк
Python
для создания полнофункциональных веб-приложений. Он позволяет легко создавать пользовательские интерфейсы, используя модели
Pydantic
, которые аналогичны свойствам компонентов React. Эта интеграция позволяет быстро разрабатывать интерактивные и красивые пользовательские интерфейсы с использованием Python.
▪ Github
▪ Docs
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥7❤5😱4
Как правильно подставлять значения из переменных / списков / словарей в SQL запрос в Python?
⏩ Лучше всего использовать SQL запросы с использованием параметров:
⏩ Какие преимущества приносит использование параметров?
— Защита от SQL-инъекций
— Правильное квотирование литералов в зависимости от их типа (пример со строками, пример с датами).
— Оптимизация — сокращение времени работы SQL запроса. Благодаря использованию параметров следующие шаги не выполняются при повторном запуске (зависит от БД):
— проверка синтаксиса SQL запроса
— проверка прав доступа к объектам БД
— построение плана выполнения SQL запроса
— Защита от переполнения/вытеснения кеша SQL запросов. Например "безобидный" запрос
⏩ Пример использования параметров в SQL запросе:
При таком подходе можно использовать
📎 Читать подробнее
@pythonl
cursor.execute("SELECT * FROM my_table WHERE id = ?", [123])
# parameter placeholder ------------------------> ^
# список/кортеж со значениями параметров -----------> ^^^^^
— Защита от SQL-инъекций
— Правильное квотирование литералов в зависимости от их типа (пример со строками, пример с датами).
— Оптимизация — сокращение времени работы SQL запроса. Благодаря использованию параметров следующие шаги не выполняются при повторном запуске (зависит от БД):
— проверка синтаксиса SQL запроса
— проверка прав доступа к объектам БД
— построение плана выполнения SQL запроса
— Защита от переполнения/вытеснения кеша SQL запросов. Например "безобидный" запрос
qry = f"SELECT first_name, last_name FROM users WHERE id = {user_id}"
, который часто выполняется в нагруженной системе с различными значениями user_id
может вытеснить из кеша запросов полезные запросы. import sqlite3
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("create table lang (name, first_appeared)")
cur.execute("insert into lang values (?, ?)", ("C", 1972))
lang_list = [
("Fortran", 1957),
("Python", 1991),
("Go", 2009),
]
cur.executemany("insert into lang values (?, ?)", lang_list)
cur.execute("select * from lang where first_appeared=:year", {"year": 1972})
print(cur.fetchall())
con.close()
При таком подходе можно использовать
cursor.executemany()
- это значительно быстрее и эффективнее по сравнению с вставкой в цикле по одной строке.@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🔥2😁1
Список куртых инструментов, библиотек и веб-сервисов, используемых при парсинге и обработке данных.
▪Github
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤2
В статье описаны такие структуры данных как:
— Массив (Array)
— Динамический массив (Dynamic array)
— Связный список (Linked list)
— Стек (Stack)
— Очередь (Queue)
— Множество (Set)
— Карта (Map)
— Двоичное дерево поиска (Binary search tree)
— Префиксное дерево (Trie)
— Граф (Graph)
Параллельно рассказывается про самые популярные алгоритмы и ещё много всего)
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤10🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Хорошо подходит для работы со сложными диаграммами: сперва можно создать диаграмму в десктопной версии Draw.io, а потом доработать ее в VScode с помощью расширения Draw.io Integration.
Quarto — крутая штука для работы с документацией под R, Python, Julia и Observable. Расширение Quarto для VScode поможет редактировать и рендерить QMD-файлы. В нем есть режим предварительного просмотра, который позволяет менять код документа и одновременно просматривать результат.
Jupyter — один из самых популярных фреймворков для создания заметок, особенно в Python. Кстати, Jupyter классно работает вместе с документацией Quarto для Python. Расширение VScode Jupyter интегрирует заметки Jupyter в редактор VScode и поддерживает ipynb-файлы.
С расширением Markdown All in One удобно редактировать документацию в формате Markdown. Оно располагает два окна рядом: редактор кода и тут же результат.
Mermaid особенно полезен, если вам нужно создать структуру кодовой базы или динамическую диаграмму. В VScode есть два расширения для работы с файлами Mermaid — Mermaid Preview и Markdown Preview Mermaid Support.
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🔥3
🔥 Совет по Python: Распаковка с помощью iterables!
Знаете ли вы, что "распаковка" работает со всеми видами iterable (т.е. не только со списками или кортежами), делая ваш код короче и элегантнее. 🚀
Этот небольшой фрагмент кода / хитрость позволяет вам легко захватывать ключи или элементы. 🐍 ✨
#Python #tips
@pythonl
Знаете ли вы, что "распаковка" работает со всеми видами iterable (т.е. не только со списками или кортежами), делая ваш код короче и элегантнее. 🚀
Этот небольшой фрагмент кода / хитрость позволяет вам легко захватывать ключи или элементы. 🐍 ✨
#Python #tips
@pythonl
❤11👍6🔥4
Проект основал Shing Lyu, один из разработчиков движка Servo и участник перевода CSS-движка Firefox на компоненты, написанные на языке Rust. Для оценки текущего состояния разработки можно использовать web-интерфейс с интерпретатором RustPython, скомпилированным в WebAssembly. Код распространяется под лицензией MIT.
RustPython состоит из парсера кода на Python в абстрактное синтаксическое дерево (AST), компилятора AST в байткод и виртуальной машины для выполнения байткода. Для ускорения выполнения предоставляется начальная реализация JIT-компилятора, преобразующего python-функции в машинный код. Поддерживается компиляция RustPython в форму универсального WASI-модуля на WebAssembly, который может запускаться в различных операционных системах.
Проектом также предоставляются средства для интеграции кода на языке Python в проекты на языке Rust, без применения биндингов на основе CPython - RustPython позволяет встраивать Python-конструкции непосредственно в код на языке Rust и использовать Python в качестве языка скриптинга в приложениях.
@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥7❤3
🔥 Полезная подборка для Python разработчиков.
Свежие бесплатные курсы, заметки разработчиков,книги, разбор вопросов с собеседований, гайды, и многое другое.
▪Где изучать Python в 2024. Бесплатные курсы, книги и ресурсы
▪ Видео
▪100 вопросов для подготовки к собесу Python
▪Вопросы Middle
▪Видео
▪100 вопросов для подготовки к собесу Data Science
▪Видео
▪Вливаемся в Data Science: подробный roadmap что и где изучать
▪Machine Learning инженер: что/где/как изучать, чтобы въехать
▪ Моя большая практическая шпаргалка SQL (SQLite) с готовыми запросами
▪ Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра
▪ Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы
▪40 Полезных инструментов Дата Саентиста
▪Go — 100 вопросов/заданий с собеседований
▪Видео
▪ Где изучать Linux в 2024. Бесплатные курсы, книги и ресурсы
▪Видео
▪ Бесплатные курсы для изучения искусственного интеллекта в 2024 году
▪NumPy: оттачивайте навыки Data Science на практике
▪Numpy полный бесплатный курс
▪Где искать работу Дата Саентисту в 2024 году
▪Ресурсы для поиска работы Python разработчикам
▪ Бесплатные курсы по большим языковым моделям для дата-сайентистов
@pythonl
Свежие бесплатные курсы, заметки разработчиков,книги, разбор вопросов с собеседований, гайды, и многое другое.
▪Где изучать Python в 2024. Бесплатные курсы, книги и ресурсы
▪ Видео
▪100 вопросов для подготовки к собесу Python
▪Вопросы Middle
▪Видео
▪100 вопросов для подготовки к собесу Data Science
▪Видео
▪Вливаемся в Data Science: подробный roadmap что и где изучать
▪Machine Learning инженер: что/где/как изучать, чтобы въехать
▪ Моя большая практическая шпаргалка SQL (SQLite) с готовыми запросами
▪ Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра
▪ Шпаргалка для алгособеса 2 — графовые и строковые алгоритмы
▪40 Полезных инструментов Дата Саентиста
▪Go — 100 вопросов/заданий с собеседований
▪Видео
▪ Где изучать Linux в 2024. Бесплатные курсы, книги и ресурсы
▪Видео
▪ Бесплатные курсы для изучения искусственного интеллекта в 2024 году
▪NumPy: оттачивайте навыки Data Science на практике
▪Numpy полный бесплатный курс
▪Где искать работу Дата Саентисту в 2024 году
▪Ресурсы для поиска работы Python разработчикам
▪ Бесплатные курсы по большим языковым моделям для дата-сайентистов
@pythonl
👍6🔥4❤1
#!
в Python#!
.#!/usr/bin/python3
print("Hello, World!")
#
, за которым следует восклицательный знак !
, известный как bang
, отсюда и название shebang. python
или python3
.@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥9