この関数はデコレータであり、with文コンテキストマネージャのための ファクトリ関数の定義に利用できます。 ファクトリ関数を定義するために、クラスあるいは 別の__enter__()と__exit__()メソッドを作る必要はありません。 簡単な例(実際にHTMLを生成する方法としてはお勧めできません!): from __future__ import with_statement from contextlib import contextmanager @contextmanager def tag(name): print "<%s>" % name yield print "</%s>" % name >>> with tag("h1"): ... print "foo" ... <h1> foo </h1> デコレートされた関数は呼び出されたときにジェネレータ-イテレータを返します