Многострочный с предложением в Python

Как я могу распределить длинное предложение with в Python на несколько строк? Прямо сейчас у меня есть

    with self.context_manager_one(some, parameters, that, are, passed) \
            as return_value_one, \
            self.context_manager_two(self.p, slice(None), None) \
            as return_value_two:

Я хотел бы следовать руководству Google по стилю Python, которое запрещает продолжение строки обратной косой черты.


person Neil G    schedule 04.05.2013    source источник
comment
Как насчет разделения на два контекстных менеджера?   -  person alecxe    schedule 04.05.2013
comment
@alecxe: Что ты имеешь в виду?   -  person Neil G    schedule 04.05.2013
comment
Я имею в виду только with ... as return_value_two внутри with ... as return_value_one.   -  person alecxe    schedule 04.05.2013
comment
Верно, это экономит один `\`, но нельзя ли использовать круглые скобки для этого? Глядя на дерево синтаксического анализа, это кажется невозможным.   -  person Neil G    schedule 04.05.2013
comment
Я бы просто определил контекстные менеджеры вне оператора with или использовал nested: docs.python.org /2/библиотека/contextlib.html. Надеюсь, это поможет.   -  person alecxe    schedule 04.05.2013
comment
@alecxe: вложенных больше нет…   -  person Neil G    schedule 04.05.2013
comment
@alecxe: Хорошо, спасибо. Жаль, что Python не допускает круглых скобок с оператором with. Это кажется произвольным ограничением.   -  person Neil G    schedule 04.05.2013
comment
Вы можете добавить () вокруг выражения: with (open("c:\\temp\\23", "w")) as f: pass сработало для меня, и with (self.context_manager_one(some, parameters, that, are, passed)) as return_value_one, (self.context_manager_two(self.p, slice(None), None)) as return_value_two: тоже. Там вы можете добавить разрывы строк по своему усмотрению.   -  person glglgl    schedule 27.05.2013
comment
Связано: stackoverflow.com/questions/31039022/   -  person User    schedule 23.02.2020
comment
Отвечает ли это на ваш вопрос? Многострочный Python с оператором   -  person User    schedule 23.02.2020


Ответы (1)


Это исправлено в Python 3.10!

https://github.com/we-like-parsers/pegen/issues/ 229

https://bugs.python.org/issue12782

person Neil G    schedule 11.06.2020