Python, PEP-8 и многострочное форматирование dict

#python #pep8

#python #pep8

Вопрос:

Я должен объявить некоторые dict на Python. Я пишу такой код:

 class MegaClass(object):
    _activation_grad_classes = 
    {
        activation.ForwardStrictRELU: activation.BackwardStrictRELU,
        activation.ForwardLog: activation.BackwardLog,
        activation.ForwardSinCos: activation.BackwardSinCos
    }
  

И получите ошибку PEP-8 : E122 continuation line missing indentation or outdented .

Как я могу это исправить?

Ответ №1:

Поместите открывающую фигурную скобку в строку назначения:

 _activation_grad_classes = {
    activation.ForwardStrictRELU: activation.BackwardStrictRELU,
    activation.ForwardLog: activation.BackwardLog,
    activation.ForwardSinCos: activation.BackwardSinCos
}
  

Редко возникает необходимость в использовании для экранирования новой строки в Python; вместо этого используйте {..} , [..] и (..) для группировки выражений по нескольким строкам.

Комментарии:

1. Единственный раз, когда я когда-либо использую » multi_line_text=''' , — это экранирование первой новой строки, и текст в документе here выстраивается так, как он будет определен после определения.

2. @dawg: действительно, это единственное место, где я его когда-либо использую, и только потому, что это делает первую строку более аккуратной.