когда оператор python является продолжением строки?
синтаксически недопустимо следующее:
if extremely_long_condition_that_takes_up_a_whole_line and
another_condition:
#do something
действует следующее:
if (extremely_long_condition and
another_condition):
#do something
почему они разные? В более общем плане, почему #2 в порядке, но #1 как-то опасен/неоднозначен? Я не вижу, как первое утверждение является или обобщается на двусмысленное утверждение.
5 ответов
скобки подразумевают продолжение линии, пока они не будут закрыты.
предпочтительным способом обертывания длинных строк является использование подразумеваемого Python продолжение линии внутри скобок, скобок и скобок. Длинная линия можно разбить на несколько строк, обернув выражения в скобки. Они должны использоваться вместо использования обратной косой черты для продолжения линии.
или это уже обсуждали более формально в справочник по языку:
две или более физические строки могут быть объединены в логические строки с помощью символы обратной косой черты (\)
выражения в круглых скобках, квадратных скобках или фигурных скобках могут быть разделены на несколько физических строк без использования обратной косой черты.
без фигурных скобок это определенно неоднозначно в присутствии унарных операторов.
рассмотрим строку:
a = 3 + 4
+1
здесь у вас есть простое сложение, за которым следует унарный положительный оператор.
вы можете утверждать, что линия с трейлинг-оператором не двусмысленна (и в настоящее время я не могу придумать встречный пример), поэтому я вернусь к части" особые случаи недостаточно особенные, чтобы нарушить правила " Дзен питон.
также обратите внимание, что теперь вы можете присоединять строки через несколько строк без оператора:
a = ("Hello "
"World")
другой допустимый, потерять скобки (не рекомендуется PEP 8) :
if extremely_long_condition_that_takes_up_a_whole_line and \
another_condition:
#do something
С PEP 8 :
предпочтительным способом обертывания длинных строк является использование подразумеваемого продолжения строки Python внутри скобок, скобок и скобок. Длинные строки можно разбить на несколько строк, заключив выражения в круглые скобки. их следует использовать вместо использования обратной косой черты для продолжения строки. Убедитесь в том, что отступ продолженной линии соответствующим образом.
Я предлагаю вам прочитать PEP 8.
все круглые скобки поставляются со встроенным продолжением линии. Я не уверен насчет and
в частности, но причина, по которой продолжения линии не поощряются (\
- style) является то, что конечные пробелы могут аннулировать команду, и их трудно увидеть. Пробелы внутри скобок, никогда не сломать его.
конечно, вы можете использовать функции, чтобы сделать его более понятным.
вместо:
if (extremely_long_condition_that_takes_up_a_whole_line and
another_condition):
#do something
вы могли бы сделать:
def cond():
extremely_long_condition_that_takes_up_a_whole_line
def another_condition():
# whatever
if cond() and another_condition():
#do something
или, если у вас есть куча условий:
if all(conditions(x) for x in seq):
#do something
дизайн Python предназначен для поощрения длинных строк и блоков, которые должны быть разбиты на меньшие более читаемые биты. Вы сталкиваетесь с таким поощрением.
Я пытаюсь удерживать строки до 70 символов.
самые трудные для меня restring длину вложенных представлений. Я ломаю их так, что перерыв на самом деле помогает читаемости.