Python/ django
58.9K subscribers
2.07K photos
61 videos
47 files
2.79K links
по всем вопросам @haarrp

@itchannels_telegram - 🔥 все ит-каналы

@ai_machinelearning_big_data -ML

@ArtificialIntelligencedl -AI

@datascienceiot - 📚

@pythonlbooks

РКН: clck.ru/3FmxmM
加入频道
🖥 Python: когда использовать array вместо list?

Если в двух словах, то для хранения элементов разных типов, предпочтительнее использовать list, а для быстрых операций с числовыми данными и эффективного расходования памяти – array из модуля array.


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

Используйте списки, когда:
— Вам необходимо хранить элементы разного типа.
— Предполагается изменение объема данных.
— Важны удобство и простота поддержки кода.


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

Выбирайте массивы, когда:
— Вы работаете исключительно с числами одного типа.
— Обрабатываете большие объемы данных и важна экономия памяти.
— Нужна тесная интеграция с C-кодом.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Помнишь эти методы списков в Python?

Держи, вот полезная шпаргалка, чтобы освежить их

📎 А вот ещё годный сайт, где собраны самые используемые методы/функции Python

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Полезный приём при работе с исключениями в Python

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
🖥 Flect is a Python framework for building full-stack web applications.

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
Как правильно подставлять значения из переменных / списков / словарей в SQL запрос в Python?

Лучше всего использовать SQL запросы с использованием параметров:
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 может вытеснить из кеша запросов полезные запросы.

Пример использования параметров в SQL запросе:
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
🖥 Awesome-Web-Scraping

Список куртых инструментов, библиотек и веб-сервисов, используемых при парсинге и обработке данных.

Github

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Полезная статья по алгоритмам и структурам данных 🔥

В статье описаны такие структуры данных как:
— Массив (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
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 5 полезных расширений VScode для работы с документацией Python и не только 🌟

Draw.io Integration
Хорошо подходит для работы со сложными диаграммами: сперва можно создать диаграмму в десктопной версии Draw.io, а потом доработать ее в VScode с помощью расширения Draw.io Integration.

Quarto
Quarto — крутая штука для работы с документацией под R, Python, Julia и Observable. Расширение Quarto для VScode поможет редактировать и рендерить QMD-файлы. В нем есть режим предварительного просмотра, который позволяет менять код документа и одновременно просматривать результат.

Jupyter
Jupyter — один из самых популярных фреймворков для создания заметок, особенно в Python. Кстати, Jupyter классно работает вместе с документацией Quarto для Python. Расширение VScode Jupyter интегрирует заметки Jupyter в редактор VScode и поддерживает ipynb-файлы.

Markdown All in One
С расширением Markdown All in One удобно редактировать документацию в формате Markdown. Оно располагает два окна рядом: редактор кода и тут же результат.

Mermaid
Mermaid особенно полезен, если вам нужно создать структуру кодовой базы или динамическую диаграмму. В VScode есть два расширения для работы с файлами Mermaid — Mermaid Preview и Markdown Preview Mermaid Support.

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Совет по Python: Распаковка с помощью iterables!

Знаете ли вы, что "распаковка" работает со всеми видами iterable (т.е. не только со списками или кортежами), делая ваш код короче и элегантнее. 🚀

Этот небольшой фрагмент кода / хитрость позволяет вам легко захватывать ключи или элементы. 🐍

#Python #tips

@pythonl
🖥 Развивающийся интерпретатор RustPython

🔥 Относительно недавно стал доступен выпуск проекта RustPython 0.3, развивающего интерпретатор языка программирования Python, написанный на языке Rust. RustPython нацелен на обеспечение совместимости с CPython 3.11 и более новыми выпусками.

Проект основал 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 в качестве языка скриптинга в приложениях.

▶️Из проектов, уже использующих RustPython, отмечаются СУБД GreptimeDB, игровой движок pyckitup, игра Robot Rumble и linter Ruff.

🖥 GitHub

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