PYPROGLIB Telegram 7166
🔳 PEP 806 — смешанные синхронные и асинхронные контекстные менеджеры с точной маркировкой async

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

📪 PEP 806 предлагает разрешить использовать в одном with и синхронные, и асинхронные менеджеры, просто помечая асинхронные ключевым словом async.

Пример старого подхода с глубокой вложенностью:
async def process_data():
async with acquire_lock() as lock:
with temp_directory() as tmpdir:
async with connect_to_db(cache=tmpdir) as db:
with open('config.json', encoding='utf-8') as f:
config = json.load(f)
await db.execute(config['query'])


С PEP 806 код станет компактнее и читаемее:
async def process_data():
with (
async acquire_lock() as lock,
temp_directory() as tmpdir,
async connect_to_db(cache=tmpdir) as db,
open('config.json', encoding='utf-8') as f,
):
config = json.load(f)
await db.execute(config['query'])


🔛 Меньше вложенности
🔛 Чёткая маркировка асинхронного кода
🔛 Легче читать и поддерживать

🌠 Полный текст PEP: https://clc.to/Kx-lqQ

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍184



tgoop.com/pyproglib/7166
Create:
Last Update:

🔳 PEP 806 — смешанные синхронные и асинхронные контекстные менеджеры с точной маркировкой async

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

📪 PEP 806 предлагает разрешить использовать в одном with и синхронные, и асинхронные менеджеры, просто помечая асинхронные ключевым словом async.

Пример старого подхода с глубокой вложенностью:

async def process_data():
async with acquire_lock() as lock:
with temp_directory() as tmpdir:
async with connect_to_db(cache=tmpdir) as db:
with open('config.json', encoding='utf-8') as f:
config = json.load(f)
await db.execute(config['query'])


С PEP 806 код станет компактнее и читаемее:
async def process_data():
with (
async acquire_lock() as lock,
temp_directory() as tmpdir,
async connect_to_db(cache=tmpdir) as db,
open('config.json', encoding='utf-8') as f,
):
config = json.load(f)
await db.execute(config['query'])


🔛 Меньше вложенности
🔛 Чёткая маркировка асинхронного кода
🔛 Легче читать и поддерживать

🌠 Полный текст PEP: https://clc.to/Kx-lqQ

🐸 Библиотека питониста

#буст

BY Библиотека питониста | Python, Django, Flask


Share with your friend now:
tgoop.com/pyproglib/7166

View MORE
Open in Telegram


Telegram News

Date: |

fire bomb molotov November 18 Dylan Hollingsworth yau ma tei best-secure-messaging-apps-shutterstock-1892950018.jpg How to create a business channel on Telegram? (Tutorial) Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week. Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you:
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American