當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python contextlib.nullcontext用法及代碼示例


用法:

contextlib.nullcontext(enter_result=None)

返回一個從 __enter__ 返回 enter_result 的上下文管理器,否則什麽也不做。它旨在用作可選上下文管理器的stand-in,例如:

def myfunction(arg, ignore_exceptions=False):
    if ignore_exceptions:
        # Use suppress to ignore all exceptions.
        cm = contextlib.suppress(Exception)
    else:
        # Do not ignore any exceptions, cm has no effect.
        cm = contextlib.nullcontext()
    with cm:
        # Do something

使用 enter_result 的示例:

def process_file(file_or_path):
    if isinstance(file_or_path, str):
        # If string, open file
        cm = open(file_or_path)
    else:
        # Caller is responsible for closing file
        cm = nullcontext(file_or_path)

    with cm as file:
        # Perform processing on the file

它也可以用作異步上下文管理器的stand-in:

async def send_http(session=None):
   if not session:
       # If no http session, create it with aiohttp
       cm = aiohttp.ClientSession()
   else:
       # Caller is responsible for closing the session
       cm = nullcontext(session)

   async with cm as session:
       # Send http requests with session

3.7 版中的新函數。

在 3.10 版中更改:異步上下文管理器添加了支持。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 contextlib.nullcontext。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。