Как вызвать contextmanager, игнорирующий полученное значение (в одну строку)? - PullRequest
1 голос
/ 01 июня 2019

Например:

@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 ...

1 Ответ

0 голосов
/ 02 июня 2019
def use(cm):
    with cm:
        pass

Тогда use(add_stuff("foo")) - это PEP 8-й.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...