【发布时间】:2017-05-03 10:12:52
【问题描述】:
从Python的source code of open来看,我认为open只是一个普通的函数。
为什么我们可以像下面这样使用它?
with open('what_are_context_managers.txt', 'r') as infile:
for line in infile:
print('> {}'.format(line))
因为既不实现__enter__ 也不实现__exit__,也不使用contextlib.contextmanager 装饰器。
【问题讨论】:
-
函数返回的原始
file类型实现了上下文管理器接口。
标签: python contextmanager