Как правильно (PEP8) разрыв строки для вызова констант из функции? - PullRequest
1 голос
/ 27 марта 2019

Я использую spyder, и у меня есть код, который выглядит примерно так

    detector_x, detector_y, smeared_x, smeared_y = gamma_detection(decay_positions, cos_theta, phi)

, для которого второй i в decay_positions превышает рекомендуемое количество символов в строке (что-то вроде90).У меня динамический анализ PEP8, поэтому он, естественно, дает мне предупреждение для анализа кода.Так что же делать в этом случае с PEP8Это

detector_x, detector_y, smeared_x, smeared_y = \
gamma_detection(decay_positions, cos_theta, phi)

, который технически все еще работает, но он дает мне предупреждение

E122 continuation line missing indentation or outdented

или

detector_x, detector_y, smeared_x, smeared_y = gamma_detection(
    decay_positions, cos_theta, phi)

или это

detector_x, detector_y, smeared_x, smeared_y = gamma_detection(
                                        decay_positions, cos_theta, phi)

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

При использовании autopep8 для кода VS ваш код изменяется на следующий:

detector_x, detector_y, smeared_x, smeared_y = \
    gamma_detection(decay_positions, cos_theta, phi)

Теперь я посмотрел на общую длину, если это однострочник, который составляет 96 символов. Несмотря на то, что это превышает предел PEP8 в ~ 79 символов, я все равно рекомендовал бы оставить это как одну строку. На практике 79 символов очень короткие и читаемость не уменьшается, если вы строите строки по 100 символов. Там, где я работаю, мы также увеличили размер строки до 100 символов.

# 96 characters
detector_x, detector_y, smeared_x, smeared_y = gamma_detection(decay_positions, cos_theta, phi)
0 голосов
/ 27 марта 2019

Вы предложили варианты {1, 2, 3}.

Определенно используйте 2 или 3. Это вопрос вкуса между ними, или то, что ваш любимый редактор рекомендует вам использовать.(Поместите все это в одну строку с курсором за открытым паренем, нажмите RETURN и используйте предложенный отступ.) Пока

$ flake8

не жалуется, ты золотой.(Получите его с помощью pip install flake8.)

Для большого количества параметров или параметров, которые включают в себя длинные выражения, вы можете даже рассмотреть возможность перечисления одного параметра в строке.

Если вы назначаете лотыдлинных идентификаторов, вы можете рассмотреть возможность окружения LHS в скобках для распаковки кортежей:

(detector_x, detector_y,
 smeared_x, smeared_y) = gamma_detection(
    decay_positions,
    cos_theta + epsilon * some_long_expression(),
    phi)
...