Как изящно порвать длинную нить
Посмотрите, я видел много ответов, представленных на этом сайте, которые касаются аспектов моего вопроса. [Вышеупомянутые] ответы обычно предоставляют уже существующие примеры, которые являются слишком простыми, чтобы быть полезными - по крайней мере для меня. Но, эй, может быть, я слишком усложняю это.
Вот оригинальная длинная линия:
for i in range(2, l + 1):
job_count_array["//form[@id='SubAvailSelectForm']/font/table[2]/tbody/tr[%d]/td[1]/small" % i] = sel.get_text("//form[@id='SubAvailSelectForm']/font/table[2]/tbody/tr[%d]/td[1]/small" % i)
Вот моя попытка реализации этикета "продолжение строки" (как обрисовано в раздаточном материале pycon от 2007 года, который я нашел здесь):
for i in range(2, l + 1):
job_count_array["//form[@id='SubAvailSelectForm']/font/table[2]/ \
tbody/tr[%d]/td[1]/small" % i] = sel.get_text("/ \
/form[@id='SubAvailSelectForm']/font/table[2]/tb \
ody/tr[%d]/td[1]/small" % i)
Будет ли моя попытка (а) правильно интерпретироваться синтаксическим анализатором и / или (б) станет ли она более "привлекательной" или эффективной для любых полезных авторов? Спасибо.
1 ответ
Я бы выбрал любой из следующих двух вариантов:
for i in range(2, l + 1):
replace_index = "//form[@id='SubAvailSelectForm']/font/table[2]/tbody/tr[%d]/td[1]/small" % (i,)
job_count_array[replace_index] = sel.get_text(replace_index)
Во-первых, одна и та же длинная строка используется дважды, поэтому используйте replace_index
на своем месте. Это делает код короче и гарантирует, что у вас не будет мелких, трудно обнаруживаемых опечаток, различающихся между ними.
for i in range(2, l + 1):
replace_index = ("//form[@id='SubAvailSelectForm']/"
"font/table[2]/tbody/tr[%d]/td[1]/small") % (i,)
job_count_array[replace_index] = sel.get_text(replace_index)
Во-вторых, вы можете использовать трюк "автоматическая конкатенация строк внутри скобок" вместо экранирования конца строки для строк. Мне гораздо проще читать таким образом.
Также стоит отметить использование (%i,)
вместо %i
для форматирования строки. В моем прошлом оказалось полезным установить один аргумент форматирования строки в кортеж, чтобы было проще добавлять дополнительные аргументы в будущем, плюс было бы хорошо быть последовательным в том, как представлены аргументы форматирования строки.