Как я должен указывать тернарный условный оператор в python, чтобы он соответствовал PEP8?

PEP8 ничего не говорит о тройных операторах, если я не ошибаюсь. Итак, что вы предлагаете, как мне писать длинные строки с тернальными условными операторами?

some_variable = some_very_long_value \
                if very_long_condition_holds \
                else very_long_condition_doesnt_hold

или

some_variable = some_very_long_value \
                    if very_long_condition_holds \
                        else very_long_condition_doesnt_hold

Какой из них вы предпочитаете больше всего?

Ответ 1

Ни. Для любой длинной строки обычно лучше использовать круглые скобки, чтобы разрешить разрывы строк. Мнения различаются, следует ли вам это делать:

some_variable = (some_very_long_value
                if very_long_condition_holds
                else very_long_condition_doesnt_hold)

или это:

some_variable = (
    some_very_long_value
    if very_long_condition_holds
    else very_long_condition_doesnt_hold)

или даже это:

some_variable = (
    some_very_long_value
    if very_long_condition_holds
    else very_long_condition_doesnt_hold
)

Лично я предпочитаю третий; Внутренний стиль Google - второй.

Ответ 2

some_variable = some_very_long_value\
                if very_long_condition_holds\
                else othervalue

предпочитают фигурные скобки, когда сталкиваются с такими проблемами. проверьте здесь максимальную длину линии. http://legacy.python.org/dev/peps/pep-0008/#maximum-line-length

Ответ 3

some_variable = (some_very_long_value
                 if very_long_condition_holds else
                 very_long_condition_doesnt_hold)
  • Используйте скобки вместо обратных косых черт для продолжения строк, на PEP8.
  • Полагая конструкцию if ... else в своей собственной строке, существует четкое разделение между тремя частями этого выражения: выражение then, условная часть и выражение else. Выражения then и else отформатированы равномерно и отделены от конструкции if...else.