contextlib上下文管理器

1
2
3
4
5
6
7
8
9
10
from contextlib import contextmanager
def (name):
print "<%s>" % name
yield
print "<%s/>" % name
with tag("h1"):
print "name"
1
2
3
4
5
6
7
8
9
10
11
12
13
def (name):
print “<%s>” % name
yield 123
print “<%s/>” % name
#with tag(“h1”):
# print “name”
t=tag(“h1”)
print next(t)
next(t)

在一些操作之前和之后做处理,通过访问只生成一次的生成器实现,第一次调用 gen.next() 会执行yield前面的语句,第二次调用gen.next()执行yield后面的语句,并抛出

StopIteration异常,停止迭代。刚好用于上下文管理器的 enterexit的两次调用(进入和退出当前上下文)