当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。