Docs-Python.ru
958 subscribers
2.68K links
Обновления сайта Docs-Python.ru
Download Telegram
🆕🔥Новый материал.

👉 Шаблоны эффективного использования атрибута __name__ в Python.

📝 Материал рассматривает магический атрибут __name__ как атрибут модуля и как атрибут типа объекта. Примеры шаблонов эффективного использования атрибута __name__ в Python

🌐 https://docs-python.ru/tutorial/klassy-jazyke-python/atribut-name/
👍2🔥1
🔁Изменение информации.

👉 Функция wait() модуля asyncio в Python.

📝 Функция wait() модуля asyncio одновременно запускает awaitable-объекты (преимущественно задачи Task) из переданного множества aws и производит блокировку выполнения программы до выполнения условия, указанного в аргументе return_when.

🌐 https://docs-python.ru/standart-library/modul-asyncio-python/funktsija-wait-modulja-asyncio/
👍1🔥1
🔁Изменение информации.

👉 Функция wait_for() модуля asyncio в Python.

📝 Функция wait_for() модуля asyncio ждет, пока объект ожидания aw завершится с таймаутом timeout. Функция будет ждать до тех пор, пока объект Future не будет фактически отменен, поэтому общее время ожидания может превысить таймаут.

🌐 https://docs-python.ru/standart-library/modul-asyncio-python/funktsija-wait-for-modulja-asyncio/
👍2🔥1
🔁Изменение информации.

👉 Обработка группы исключений, оператор except* в Python.

📝 Новое в Python 3.11. Группы исключений используются try/except, как и со всеми другими исключениями. Кроме того, они распознаются оператором except*, которое соответствует их подгруппам на основе типов содержащихся исключений.

🌐 https://docs-python.ru/tutorial/oshibki-iskljuchenija-python/gruppy-iskliuchenii-except/
👍1🔥1
🔁Изменение информации.

👉 Исключения ExceptionGroup и BaseExceptionGroup в Python.

📝 Новое в Python 3.11. Исключения ExceptionGroup и BaseExceptionGroup заключают исключения в последовательность excs. Аргумент msg должен быть строкой. Разница между этими двумя классами заключается в том, что BaseExceptionGroup расширяет BaseException и может обертывать любое исключение, а Exception

🌐 https://docs-python.ru/tutorial/vstroennye-iskljuchenija-interpretator-python/exceptiongroup-baseexceptiongroup/
👍3🔥1
🔁Изменение информации.

👉 Класс ProcessPoolExecutor() модуля concurrent.futures в Python.

📝 Класс ProcessPoolExecutor() модуля concurrent.futures использует пул не более чем max_workers ядер процессора для асинхронного выполнения вызовов. Планирует и запускает выполнение рабочих процессов.

🌐 https://docs-python.ru/standart-library/modul-concurrent-futures-python/klass-processpoolexecutor-modulja-concurrent-futures/
👍2
🔁Изменение информации.

👉 Метод .transform() объектов DataFrame/DataFrameGroupBy в pandas

📝 Методы DataFrame.transform() модуля pandas вызывают функцию func для самостоятельного создания DataFrame/Series с той же формой оси, что и у исходного объекта. Метод .transform() также имеют объекты DataFrameGroupBy и Resampler. Отличие .transform() от .apply() в групповых операциях.

🌐 https://docs-python.ru/packages/modul-pandas-analiz-dannykh-python/transform-dataframegroupby/
👍2
🔁Изменение информации.

👉 Анализ логов Nginx модулем pandas в Python.

📝 Материал представляет собой мысли о том как можно подойти к анализу логов Nginx при помощи библиотеки pandas. Для анализа логов Nginx с использованием Pandas в Python можно создать мощный инструмент для мониторинга посещаемости и нагрузки сайта.

🌐 https://docs-python.ru/packages/modul-pandas-analiz-dannykh-python/analiz-logov-nginx/
👏2
Чтение и запись сжатых JSON-файлов.

Методы сжатия определяются автоматически по имени файла, — это gzip, bz2 и lzma (или xz).

https://github.com/LucaCappelletti94/compress_json?tab=readme-ov-file
👍1
🆕🔥Новый материал.

👉 Модуль Tenacity в Python.

📝 Модуль Tenacity - это Python-библиотека, которая помогает повторять выполнение кода, если он завершился ошибкой. Можно настраивать задержки, лимиты попыток, условия повтора. Автоматически обрабатывает временные ошибки. Используется как декоратор

🌐 https://docs-python.ru/packages/modul-tenacity-python/
🔥3👍1
Niquests — это элегантная и простая HTTP-библиотека для Python, созданная для людей. Она предназначена для замены Requests, которая больше не поддерживается.

Поддерживает HTTP/1.1, HTTP/2 и HTTP/3 "из коробки", без лишних усилий!

https://niquests.readthedocs.io/en/latest/index.html

Niquests стремится быть максимально совместимыми с requests, и следовательно можно мигрировать в Niquests с минимальными изменениями.

Код с модулем requests

import requests
requests.get(...)


превратится в:

import niquests
niquests.get(...)


Или просто

import niquests as requests
requests.get(...)


Если код зависит от urllib3.Timeout или urllib3.Retry, то можно сделать так:

import niquests
from niquests.packages.urllib3 import Timeout
...


urllib3 псевдонимом является niquests.packages.urllib3. Безопаснее использовать псевдоним, предоставленный Niquests.
👍8🤔1
Модуль gevent позволяет писать асинхронные сетевые приложение использую синхронный API.

Установка pip install gevent

Особенности:

- Быстрый цикл обработки событий на основе libev или libuv.
- Облегченные исполнительные модули на основе greenlets.
- API, который повторно использует концепции из стандартной библиотеки Python (в качестве примеров можно привести events и queues).
- Совместные сокеты с поддержкой SSL
- Совместные DNS-запросы, выполняемые через threadpool, dnspython или c-ares.
- Утилита Monkey, исправляющая ошибки модулей сторонних производителей для совместной работы
- Серверы TCP / UDP / HTTP
- Поддержка подпроцессов (через gevent.subprocess)
- Пулы потоков

https://pypi.org/project/gevent/
👍1
Модуль JMESPath (произносится как "джеймс пат") позволяет декларативно указать, как извлекать элементы из документа JSON.

Установка: pip install jmespath

Примеры использования:

Имеем следующий json:

{"foo": {"bar": "baz"}}


Выражение jmespath foo.bar вернет "baz".

JMESPath также поддерживает ссылки на элементы в списке.

Имеются данные:

{"foo": {"bar": ["one", "two"]}}


Выражение: foo.bar[0] вернет "one". Также можно ссылаться на все элементы в списке, используя символ звездочки *, синтаксис:

{"foo": {"bar": [{"name": "one"}, {"name": "two"}]}}


Выражение: foo.bar[*].name вернет ["one", "two"]. также поддерживается отрицательная индексация (-1 относится к последнему элементу в списке). Учитывая данные выше, выражение foo.bar[-1].name вернет "two".

Звездочку * также можно использовать для типов хэшей:

{"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}}


Выражение: foo.*.name вернет ["one", "two"].

В модуле есть функция jmespath.search, которая работает со структурами данных python.

import jmespath

path = jmespath.search('foo.bar', {'foo': {'bar': 'baz'}})
# 'baz'


Функция search в качестве аргумента принимает экземпляр jmespath.Options для управления тем, как оценивается выражение JMESPath. Наиболее распространенный сценарий использования Options для вывода ключей словаря в нужном порядке:

import jmespath

# искомую структуру можно
# скомпилировать, подобно модулю `re`
parsed = jmespath.compile('{a: a, b: b}')
parsed.search(mydata,
jmespath.Options(dict_cls=collections.OrderedDict))


https://github.com/jmespath/jmespath.py
👍42
🔁Изменение информации.

👉 Класс time() модуля datetime в Python.

📝 Класс time() модуля datetime представляет собой (локальное) время дня, независимое от какого-либо конкретного дня и подлежащее настройке с помощью объекта datetime.tzinfo().

🌐 https://docs-python.ru/standart-library/modul-datetime-python/klass-time-modulja-datetime/
👍2
🔁Изменение информации.

👉 Функция starmap() модуля itertools в Python.

📝 Функция starmap() модуля itertools создает итератор, который вычисляет функцию function, используя аргументы, полученные из кортежей в итерируемой последовательности iterable.

🌐 https://docs-python.ru/standart-library/modul-itertools-python/funktsija-starmap-modulja-itertools/
👍2
Robyn - это высокопроизводительный, ориентированный на сообщество и удобный для новаторов веб-фреймворк с поддержкой Rust.

Для установки можно просто использовать Pip:

pip install robyn


Производительность

Пример использования:

from robyn import Robyn

app = Robyn(file)

@app.get("/")
async def h(request):
return "Hello, world!"

app.start(port=8080)


Ознакомьтесь с примерами маршрутов в этом файле.

Robyn совместим со следующими версиями Python:

Python >= 3.9

Рекомендуется использовать последнюю версию Python для достижения наилучшей производительности.

Ссылка: https://robyn.tech/
2👍2🔥2
🆕🔥Новый материал.

👉 Строки шаблонов, t-строки в Python

📝 Новое в Python 3.14 Шаблонные строковые литералы (t-строки) являются обобщением f-строк, и используют префикс t вместо префикса f. T-строки вычисляются с новым типом string.templatelib.Template, а не как f-строки в типе str

🌐 https://docs-python.ru/tutorial/operatsii-tekstovymi-strokami-str-python/stroki-shablonov/
🔥5👍4
🔁Изменение информации.

👉 Метод logger.patch() модуля loguru в Python.

📝 Метод logger.patch() применяет функцию patcher для изменения записи (словарь record), созданной каждым вызовом ведения журнала.

🌐 https://docs-python.ru/packages/modul-loguru-python/funktsiia-logger-patch/
👍3