Найти - Пользователи
Полная версия: Вывод текста
Начало » Python для экспертов » Вывод текста
1 2
bialix
метод write() любого файла-подобного объекта рулит.
В том числе и sys.stdout.write() для вывода на консоль.
-=<fantom>=-
Хм. По моему, куда удобней сделать нечто такое:

a='123'
b=' ‘
c=’456'
print a+b+c
Mkdir
-=<fantom>=-
Хм. По моему, куда удобней сделать нечто такое:

a='123'
b=' ‘
c=’456'
print a+b+c
удобнее, но медленнее
-=<fantom>=-
Ээээ….
Спорить не стану.
Я всегда подхожу с точки зрения “Проще лучше чем сложно”.
“Проще хуже чем ещё проще”.
Mkdir
-=<fantom>=-
Ээээ….
Спорить не стану.
Я всегда подхожу с точки зрения “Проще лучше чем сложно”.
“Проще хуже чем ещё проще”.
Я не думаю, что метод через list.append сложнее.
Он гибче, удобнее и быстрее.

Вот простая ситуация.
Нужно делать несколько проверок и накапливать сообщения об ошибках, если какие-либо проверки срабатывают.
Затем нужно сделать return всех этих сообщений, чтобы они были разделены тэгом <br />.
После последней ошибки <br /> быть не должно.

Вариант №1
errors = []
if a != b:
    errors.append('Error #1')
if a > c:
    errors.append('Error #2')
if b != d:
    errors.append('Error #3')
if d == c:
    errors.append('Error #4')
if errors:
    return '<br />'.join(errors)

Вариант №2
errors = ''
if a != b:
    errors += 'Error #1<br />'
if a > c:
    errors += 'Error #2<br />'
if b != d:
    errors += 'Error #3<br />'
if d == c:
    errors += 'Error #4<br />'
if errors:
    return errors[:-6] // Вырезаем последний <br />

Проанализируем.
Вариант №1: быстро, гибко.
Вариант №2: выглядит неуклюже, сложнее поддаётся изменениям и работает медленнее чем вариант №1.

Все хорошо до тех пор, пока я не собираюсь заменить <br /> на обычный перенос строки.
В первом варианте я заменю лишь одну строку: return ‘\n’.join(errors)
А во втором варианте я буду менять каждое сообщение об ошибке, убирая ‘<br />’ и заменяя его на ‘\n’.
Затем мне еще нужно будет правильно вырезать последний перенос и я меняю строку с return следующим образом: return errors

Ну так чем вариант №2 проще? :)
-=<fantom>=-
А вот здесь порошу тормознуть.
Рассматриваются два класса задач.
Один - вывод в поток, а второй - работа с некоторой “кучей” объектов.
И если речь идёт именно о “куче”, то естественно, я предпочту не слипать всё в одну строку - создавать добровольно гемморой.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB