@spbpython

Страница 359 из 785
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

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
и % отработает, если ты нормально напишешь, к чему это вообще?
да пиши ради Бога, я привел пример, если ты контролируешь весь ввод всегда и всюду, то ошибки исключены

'%s' % (value,)
вот это ,извини, на мой взгляд уже говнокод

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

Google
Sergey
05.04.2017
16:23:20
да пиши ради Бога, я привел пример, если ты контролируешь весь ввод всегда и всюду, то ошибки исключены
ты о другом стал говорить изначально речь шла о том, что логгеру аргументы отдельно от строки передавать надо там такой проблемы вообще нет ты сказал, что %s не поддерживает какие-то типы данных какие?

Eugene
05.04.2017
16:23:24
вот это ,извини, на мой взгляд уже говнокод
Я тоже использую format, если что :) Просто с логом я с тобой не согласен

Дмитрий Нан
05.04.2017
16:24:30
В обычном форматировании строк, возможно, но с выводом в лог нужно использовать ленивое форматирование. Представь, ты выводишь в debug какую-нибудь сложную байду, которая форматируется долго.
я с этим согласен, просто у меня на практике такого не происходит, я не вставляю вприципе какую-то жирную байну, стараюсь пихать какое-то конечное значение

хотя в уровеньь ДЕБАГ подкидываю пожирнее

Eugene
05.04.2017
16:24:57
а как же f-strings?) или на двойке?
3.5 пока везде :( Но я пробовал, мне понравилось!

Дмитрий Нан
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
Я пишу logger.error('error=%s', var)
Вот кстати обидно что такой способ форматирования по-умолчанию

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

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
аа, я тебя понял, вместо % использовать {}. Да, разумно! Но это уже легаси, не переделаешь
В 3 же добавили возможность использовать {}. The style parameter can be one of ‘%’, ‘{‘ or ‘$’ and determines how the format string will be merged with its data:

Vitali K.
05.04.2017
16:47:25
Как я мог это проглядеть? Круто!
Ты бы видел что в JavaScript происходит ?

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
Мне ещё нравится фича format('{obj.f1} {obj.f2}', obj=some_obj)
Вот именно из-за неё нарвится формат

Дмитрий Нан
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
Мне ещё нравится фича format('{obj.f1} {obj.f2}', obj=some_obj)
ты, наверное, имел в виду '{o.f1}'.format(o=obj) format как-то по-другому работает

Дмитрий Нан
05.04.2017
16:54:26
Dmitry
05.04.2017
16:54:56
_иммолейт импрувед_

Sergey
05.04.2017
16:55:26

Страница 359 из 785