2016-06-09 2 views
3

У меня вопрос о стилизации в PEP 8 (или сокращении количества символов в каждой строке, чтобы быть меньше).Соответствующие длинные строки для соответствия PEP 8

У меня есть book с кучей разных атрибутов, и я хочу объединить их в какую-то строку.

books = [book_1, book_2, book_3] 
for b in books: 
    print("Thank you for using our Library! You have decided to borrow %s on %s. Please remember to return the book in %d calendar days on %s" %  
    (book.title, book.start_date, book.lend_duration, book.return_date")) 

Как я могу сократить эту строку, чтобы обеспечить ее читаемость?

Любые идеи помогут. PEP 8 - это всего лишь 1 идея.

+0

не связаны, но вы иметь дополнительный '' 'в конце, после' book.return_date' –

ответ

4

Вы можете переместить строку вне цикла, а затем отформатировать его перед печатью, как это:

message = 'Thank you for using our Library! You have decided to borrow {0.title} \ 
      on {0.start_date}. Please remember to return the book in \ 
      {0.lend_duration} calendar days on {0.return_date}' 

for i in books: 
    print(message.format(i)) 
+0

Для удобства чтения, я думаю, что этот подход побеждает. –

+0

Можно ли использовать скобки вокруг строк, а затем использовать '+' вместо обратных косых черт? @ burhan-khalid – bryansis2010

+0

Мне интересно, что ответ на то, как соответствовать PEP8 в длинных строках, предлагает использовать обратную косую черту ('\') вместо скобок для разделения на длинные строки, когда PEP8 рекомендует скобки вместо обратной косой черты: * предпочтительным способом обертывания длинных строк является использование продолженного продолжения строки Python в круглых скобках, скобках и фигурных скобках. Длинные строки могут быть разбиты на несколько строк, обертывая выражения в круглых скобках. Они должны использоваться вместо использования обратного слэша для продолжения строки. * – SethMMorton

1

Введите новую строку так. Смотри также: Is it possible to break a long line to multiple lines in Python

books = [book_1, book_2, book_3] 
for b in books: 
    print("Thank you for using our Library! You have decided to borrow %s on %s." \ 
     "Please remember to return the book in %d calendar days on %s" % \ 
     (book.title, book.start_date, book.lend_duration, book.return_date")) 
+4

Вам не нужно использовать обратную косую черту внутри функции печати, так как отступы игнорируются внутри paren диссертаций. –

0

Попробуйте этот подход:

print(("Thank you for using our Library! You have decided to borrow {} " 
     + "on {}. Please remember to return the book in {} calendar days" 
     + "on {}").format(book.title, book.start_date, book.lend_duration, 
         book.return_date) 

Уведомление о конкатенации строк находятся внутри parens, что позволяет отформатировать полученную строку.

3

Как не упоминается ни в одном другом ответе, вы можете использовать parenenthesis без с помощью + или \:

>>> ("hello" 
    " world") 
'hello world' 

В сочетании с Burhan's answer, что дает вам:

message = ('Thank you for using our Library! You have decided to borrow' 
      ' {0.title} on {0.start_date}. Please remember to return the' 
      ' book in {0.lend_duration} calendar days on {0.return_date}') 

for b in books: 
    print(message.format(b)) 
Смежные вопросы