Как изящно порвать длинную нить

Посмотрите, я видел много ответов, представленных на этом сайте, которые касаются аспектов моего вопроса. [Вышеупомянутые] ответы обычно предоставляют уже существующие примеры, которые являются слишком простыми, чтобы быть полезными - по крайней мере для меня. Но, эй, может быть, я слишком усложняю это.

Вот оригинальная длинная линия:

    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 для форматирования строки. В моем прошлом оказалось полезным установить один аргумент форматирования строки в кортеж, чтобы было проще добавлять дополнительные аргументы в будущем, плюс было бы хорошо быть последовательным в том, как представлены аргументы форматирования строки.

Другие вопросы по тегам