Например:
@contextmanager
def add_stuff(arg):
parser = Parser(arg)
# do something here
yield parser
# do something there
do_stuff(parser)
Обычно я называю это так:
with add_stuff("foo") as p:
p.add_more_stuff(1, 2, 3)
p.add_more_stuff(4, 5, 6)
Но иногда мне не нужно «добавлять больше материала»
with add_stuff("foo"):
pass
Есть ли способ вызвать add_stuff
в одну строку (без нарушения pep8, поставив pass
в той же строке)?
Пример ниже неработать, потому что add_stuff
не просто генератор и не может быть повторяем:
list(add_stuff("foo"))
Или я должен просто добавить какой-нибудь утилитарный функционал?
def wizz(gen):
with gen:
pass
wizz(add_stuff("foo"))
Или продолжать использовать with
...