上下文管理器类的命名约定("with"blocks)

Pet*_*lák 5 python naming-conventions contextmanager

对于要在with块中使用的类或函数是否存在通用命名约定,例如

with CreateSomeContext() as x:
    ...
Run Code Online (Sandbox Code Playgroud)

?是否表示应该使用函数的类或结果with

glg*_*lgl 5

相应的 PEP 0343中,提到了两个约定:

示例上下文名称中使用的时态不是任意的。__enter__当名称指的是在方法中完成并在方法中撤消的 操作时,使用过去时(“-ed”)__exit__。当名称指的是方法中要执行的操作时,使用进行时态(“-ing”)__exit__


Ram*_*pte 3

没有命名约定(open, socket.create_connectionurllib.request.urlopen所有返回上下文管理器都可以与 一起使用with),但上下文管理器将具有 __enter____exit__方法。

注意:在 的情况下open("file", "w"),返回值(文件对象)是上下文管理器,而不是 open