Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 4, 2007 05:02:29

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Вывод текста

метод write() любого файла-подобного объекта рулит.
В том числе и sys.stdout.write() для вывода на консоль.



Офлайн

#2 Янв. 12, 2007 14:40:10

-=<fantom>=-
От:
Зарегистрирован: 2006-08-12
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод текста

Хм. По моему, куда удобней сделать нечто такое:

a='123'
b=' ‘
c=’456'
print a+b+c



Офлайн

#3 Янв. 14, 2007 00:23:03

Mkdir
Зарегистрирован: 2006-06-30
Сообщения: 211
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод текста

-=<fantom>=-
Хм. По моему, куда удобней сделать нечто такое:

a='123'
b=' ‘
c=’456'
print a+b+c
удобнее, но медленнее



Офлайн

#4 Янв. 14, 2007 08:25:12

-=<fantom>=-
От:
Зарегистрирован: 2006-08-12
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод текста

Ээээ….
Спорить не стану.
Я всегда подхожу с точки зрения “Проще лучше чем сложно”.
“Проще хуже чем ещё проще”.



Офлайн

#5 Янв. 14, 2007 16:40:49

Mkdir
Зарегистрирован: 2006-06-30
Сообщения: 211
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод текста

-=<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 проще? :)



Офлайн

#6 Янв. 16, 2007 23:08:18

-=<fantom>=-
От:
Зарегистрирован: 2006-08-12
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод текста

А вот здесь порошу тормознуть.
Рассматриваются два класса задач.
Один - вывод в поток, а второй - работа с некоторой “кучей” объектов.
И если речь идёт именно о “куче”, то естественно, я предпочту не слипать всё в одну строку - создавать добровольно гемморой.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version