学习Python:
with语句的基本格式如下所示,这里的方括号中有一个可选部分: 使用表达式作为变量: with -块 这里的
expression
被假定返回一个支持上下文管理协议的对象(稍后将详细介绍该协议)。如果存在可选的variable
子句,则该对象还可能返回一个赋值给名称的值。 请注意,不一定要为variable
expression
;的结果分配,expression
的结果是支持上下文协议的对象,而variable
可能被分配用于语句中的其他用途。
将expression
计算为上下文管理器对象。
分配给variable
的是什么?引号只说明它不是上下文管理器对象。
分配给variable
是否调用上下文管理器类的某些方法来生成分配给variable
的实际值
谢谢。
发布于 2017-09-14 17:38:09
如果对象是__exit__
,则它可以充当上下文管理器。__enter__
返回的对象绑定到在with
语句的as
部分中指定的对象:
In [1]: class Foo:
...: def __enter__(self):
...: return 'hello'
...: def __exit__(self, *args):
...: pass
...:
In [2]: with Foo() as a:
...: print(a)
...:
hello
https://stackoverflow.com/questions/46225193
复制相似问题