Как разбить длинный оператор с помощью python
У меня есть строка кода в python, например:
with long_name_function(p) as a, other_long_name_function():
и я хочу разбить его на несколько строк, потому что слишком длинный, я могу использовать обратную косую черту, но они считаются плохой практикой. Я также мог использовать contextlib.nested, но устарел, есть ли другая альтернатива?
Ответы
Ответ 1
Это игнорирует предпосылку вопроса, но в этом случае я бы рекомендовал использовать обратную косую черту:
with really_really_long_name_function(p) as f1, \
other_really_really_long_name_function() as f2:
pass
Как сказал @JonClements, вы не можете использовать скобки или запятые в этом случае, нет альтернативы, так что обратная косая черта - это путь, и код выглядит довольно чистым IMO.
Ответ 2
Если вы хотите избежать обратных косых черт, вы можете использовать длинные имена:
lnf = long_name_function
olnf = other_long_name_function
with lnf(p) as a, olnf():
# ...
или вы можете вложить выражения:
with long_name_function(p) as a:
with other_long_name_function():
pass
Вы не хотите использовать contextlib.nested()
; есть несколько проблем с этим, что непосредственно привело к его устареванию. Раньше менеджеры контекста не рассматривались, например, для проблем с более поздними менеджерами контекста при вложенности.