
Eugene
05.04.2017
16:11:31
Будет преобразовано к строке, по умолчанию вызов __str__

Дмитрий Нан
05.04.2017
16:11:33
поставть Ноне
нет
в str.format - da

Google

Eugene
05.04.2017
16:11:43
__str__
В логгере тоже

Дмитрий Нан
05.04.2017
16:11:54
с опыта тебе говорю
вообще хороший тон писать через str.format у питонистов
С-стиль я пользую, когда крайне лениво)
т.е. почти никогда

Eugene
05.04.2017
16:12:47
Ну что ты споришь, я тебе говорю, что преобразуется. Сам проверь

Sergey
05.04.2017
16:14:22
In [1]: '%s' % None
Out[1]: 'None'
С логгером это не так
там вроде ничего хитрого не происходит
https://github.com/python/cpython/blob/master/Lib/logging/__init__.py#L338

Eugene
05.04.2017
16:15:43

Sergey
05.04.2017
16:15:52
неправильно тебя понял, всё ок

Google

Дмитрий Нан
05.04.2017
16:15:54

Eugene
05.04.2017
16:15:55
Я о том, что:
вообще хороший тон писать через str.format у питонистов

Sergey
05.04.2017
16:15:59
да, теперь понял
2.7 то же

Eugene
05.04.2017
16:17:06
спецификатор %s всегда так работал, сколько себя помню.

Дмитрий Нан
05.04.2017
16:18:07
value = (1,2,3)
' value {}'.format(value)
Out[6]: ' value (1, 2, 3)'
' value %s ' % value
Traceback (most recent call last):
File "/home/owner/Envs/qpay/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2881, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-7-3a7787bbf079>", line 1, in <module>
' value %s ' % value
TypeError: not all arguments converted during string formatting
я нарывался просто на такое не раз

Sergey
05.04.2017
16:18:39
ну это простая ошибка

Дмитрий Нан
05.04.2017
16:18:43
и не только в логере, а вообще в форматировании строк
я показал два подхода
str.format отработал

Eugene
05.04.2017
16:20:11
в логгере не будет такой ошибки, если ты напишешь logger.info('%s', (1,2,3))

Sergey
05.04.2017
16:20:12
и % отработает, если ты нормально напишешь, к чему это вообще?

Eugene
05.04.2017
16:20:45
'%s' % (value,)

Дмитрий Нан
05.04.2017
16:21:00

Eugene
05.04.2017
16:22:25
В обычном форматировании строк, возможно, но с выводом в лог нужно использовать ленивое форматирование. Представь, ты выводишь в debug какую-нибудь сложную байду, которая форматируется долго.

Google

Sergey
05.04.2017
16:23:20

Eugene
05.04.2017
16:23:24

Sergey
05.04.2017
16:24:26

Дмитрий Нан
05.04.2017
16:24:30
хотя в уровеньь ДЕБАГ подкидываю пожирнее

Eugene
05.04.2017
16:24:57

Дмитрий Нан
05.04.2017
16:25:36
в целом я про производительность написал
хочешь производительность - не бери питон

Vitali K.
05.04.2017
16:26:32
Я пишу logger.error('error=%s', var)

Дмитрий Нан
05.04.2017
16:26:40
а тот накладной расход , который даёт str.format - во внимание просто не беру

Vitali K.
05.04.2017
16:26:44
Такие сообщения агрегируются в sentry
Считаю это плюсом

GNU/Docker
05.04.2017
16:37:49
Так.
Что за хрень?

Denis
05.04.2017
16:38:32

GNU/Docker
05.04.2017
16:38:43
В документации к логгингу рекомендовано форматить через %s и кидать аргументы через запятую.

Denis
05.04.2017
16:38:43
Мне больше format нравится :(

Александр
05.04.2017
16:38:47
хочешь производительность - не бери питон
Один мой коллега как-то сокрушался про все эти презентабельные форматы вроде json, высокоуровневые языки. Говорит, вот было время, он распределенную систему писал на ассембьере, разработал бинарный протокол обмена сообщениями и бинарник занимал условно 300 килобайт. И работало все мгновенно. А сейчас нужны серверные супер дома для предприятий.

Denis
05.04.2017
16:39:20

GNU/Docker
05.04.2017
16:39:21
Форматить форматом и кидать в логгер - моветон.

Google

Dmitry
05.04.2017
16:39:35

Дмитрий Нан
05.04.2017
16:39:45

Denis
05.04.2017
16:39:47

Eugene
05.04.2017
16:41:03

Дмитрий Нан
05.04.2017
16:41:04

Dmitry
05.04.2017
16:41:33
нет

Дмитрий Нан
05.04.2017
16:41:40
мне производительности питона предостаточно сейчас

Eugene
05.04.2017
16:42:15

Vitali K.
05.04.2017
16:42:15
А меня интересует только производительность разработки :)

Dmitry
05.04.2017
16:42:18
будем обсуждение поддерживать на уровне спб-пайтон, а не на уровне студентов первого курса, которым дали C++ и сказали что он самый быстрый язык

Admin
ERROR: S client not available

Дмитрий Нан
05.04.2017
16:42:47
ожет я студент 1го курса

Dmitry
05.04.2017
16:43:09
так не делай таких заявлеинй адовых

GNU/Docker
05.04.2017
16:43:20
Тогда не стоит навязывать другим свой опыт.

Дмитрий Нан
05.04.2017
16:43:25
я как бы намикал , что сравнивать ,например, С и Питон просто некорректно вкорне

Dmitry
05.04.2017
16:43:36
ии?

Дмитрий Нан
05.04.2017
16:43:45
чет вы агритесь по непонятной мне логике , ребятки

Vitali K.
05.04.2017
16:44:05
Мне ещё нравится фича format('{obj.f1} {obj.f2}', obj=some_obj)

GNU/Docker
05.04.2017
16:44:09
Тогда стоит задуматься.

Google

Дмитрий Нан
05.04.2017
16:44:11
выше вас в беседе не было, вырвали фразу из контекста и давай кусать меня)
мне хоть ход мысли твоей будет понятен
почему утверждение голословное и адское?

Dmitry
05.04.2017
16:46:21

Eugene
05.04.2017
16:47:00

Vitali K.
05.04.2017
16:47:25

Eugene
05.04.2017
16:48:01
JavaScript вообще как-то мимо меня прошёл, слишком далеко. И я даже начинать не хочу уже. Хотя иногда интересна вся эта движуха и хайп.

Denis
05.04.2017
16:50:59

Dmitry
05.04.2017
16:51:25
@iroln вот опять для асапной таски дофига паришься за ерунду
перформанс форматирования на логгировании, штаа

Дмитрий Нан
05.04.2017
16:51:56

Denis
05.04.2017
16:52:00

Дмитрий Нан
05.04.2017
16:52:19
теперь , думаю, мое высказывание ясно

Eugene
05.04.2017
16:52:46

Denis
05.04.2017
16:52:52
Вообще KISS
Рефреш страницу пока данные не появятся

Sergey
05.04.2017
16:54:02

Дмитрий Нан
05.04.2017
16:54:26

Dmitry
05.04.2017
16:54:56
_иммолейт импрувед_

Sergey
05.04.2017
16:55:26

Vitali K.
05.04.2017
16:55:54