
Roman
14.01.2017
17:10:29
http://stackoverflow.com/questions/8107695/python-faq-how-fast-are-exceptions
http://gerg.ca/blog/post/2015/try-except-speed/
The version using if stayed about the same, but raising an exception on 30% of queries caused a dramatic slowdown.

Google

Артур
14.01.2017
17:14:22

Roman
14.01.2017
17:24:26
если исключение случается часто - нельзя использовать try/except.
для cpython try/except в 8 раз медленнее обычного if В случае возникновения исключения

Артур
14.01.2017
17:35:34

Aragaer
14.01.2017
17:35:38
все просто - если исключение произошло, то его обработка довольно дорогая
я однажды видел код примерно следующего вида - надо было вычислить минимальное из двух функций, каждая из которых использовала некоторую нетривиальную арифметику. Функции от одной переменной, которая пробегает все значения от 0 до .. условно 100
так вот в одной из функций просто есть деление на этот несчастный х. Но вблизи нуля эта функция точно больше второй

Rookie
14.01.2017
17:37:25
Интересно, это питон-проблема, или касается прочих throw new

Aragaer
14.01.2017
17:37:54
в итоге чем делать if x == 0: только вторая else: минимум из двух быстрее было сделать именно try except
Подготовка к эксепшну и выход из блока try если эксепшн не произошел -
это быстро
в плюсах так ваще реально бесплатно, т.к. вся подготовка делается на этапе компиляции. В чистом С даже вход в try/catch это чуть-чуть действий

Google

Roman
14.01.2017
17:39:31

Aragaer
14.01.2017
17:39:56
в питоне вход в try/except и выход без эксепшна - быстро. А вот когда эксепшн, то логика обычно "ну мы все равно уже в эксепшн попали, так что спешить некуда"
for x in range(10000):
try:
r.append(10/x)
except:
r.append(0) против аналогичного с if
один эксепшн окажется быстрее, чем 10 тыс сравнений

Roman
14.01.2017
17:42:03
но на pypy эксепшены дешевые

Rookie
14.01.2017
17:42:19
"ну мы все равно уже в эксепшн попали, так что спешить некуда" - доля истины в этом есть.

Aragaer
14.01.2017
17:43:20
на pypy if тоже может быть дешевым, потому что он этот иф соптимизирует после первой итерации
развернет в
r.append(0)
for x in range(1, 10000):
r.append(1/x)

Roman
14.01.2017
17:44:23
10000000 loops, best of 7: 67.9 ns per loop #try/except
10000000 loops, best of 7: 61.7 ns per loop #if
это в случае деления на 0

Aragaer
14.01.2017
17:46:05
общая логика примерно такая - сравнение это действие, которое ты делаешь всегда, даже когда знаешь результат заранее
try это почти всегда все ок, без лишнего сравнения, но иногда промах и вобщем сразу печаль

Roman
14.01.2017
17:46:37
10000000 loops, best of 7: 64.2 ns per loop #try/except
10000000 loops, best of 7: 64.7 ns per loop #if
это если без деления на 0

Aragaer
14.01.2017
17:47:28
pypy имеет возможность соптимизировать это добро

Roman
14.01.2017
17:47:56

Aragaer
14.01.2017
17:48:17
и правильно делает

here1am
14.01.2017
17:59:30
посоны, как в пихтоне вывести спецсимволы как спецсимволы?

Google

here1am
14.01.2017
17:59:52
ну типа не интерпретировать перевод на новую строку, а вывалить его как \n

Роман
14.01.2017
18:01:23
r'\n'

b0g3r
14.01.2017
18:02:10

here1am
14.01.2017
18:02:32
не, данные мне подсовываются, я хочу отладить
r'data: {0}'.format(data) не работает

b0g3r
14.01.2017
18:02:48
.replace
.replace('\n', '\\n')

Aragaer
14.01.2017
18:03:41
repr не?

arisu
14.01.2017
18:03:47
лол
а причем тут это
»> 'data: {0}'.format(r'\n')
'data: \\n'
если входные данные содержат \n - тогда он и выведется как текст

b0g3r
14.01.2017
18:04:47
Либо print(repr(s))

arisu
14.01.2017
18:04:49
а не как перенос

b0g3r
14.01.2017
18:05:01

here1am
14.01.2017
18:05:05

Aragaer
14.01.2017
18:05:07
>>> print(repr("hello, world\n"))
'hello, world\n'

arisu
14.01.2017
18:05:53
так пусть сделает .replace('\n', r'\n')

here1am
14.01.2017
18:06:08

Марк
14.01.2017
18:06:27
Хе-хе. SpaceX только что посадила первую ступень на плавучую платформу.

Google

here1am
14.01.2017
18:06:40

arisu
14.01.2017
18:06:47
конечно

Aragaer
14.01.2017
18:07:02
да, все

here1am
14.01.2017
18:07:34
да, все
ну твоим вариантом очевидно, что всё выведет как надо

Diskord
14.01.2017
18:26:52
а в fluent python пишут что EAFP это мол Python way

Denis
14.01.2017
18:27:55
Обычно так и есть

Admin
ERROR: S client not available

Denis
14.01.2017
18:28:05
Но злоупотреблять не надо

Diskord
14.01.2017
18:28:46
дошёл там до yield from
в 3.5 это же вроде заменили на await?

Denis
14.01.2017
18:29:52
await для корутин, yield from для генераторов, ничего там не заменяли

Diskord
14.01.2017
19:10:31
Где можно почитать про корутины поподробнее асинхронное программирование, и где это применяется?

Aragaer
14.01.2017
19:27:31
если не знаешь, где применяется, зачем читать?

Diskord
14.01.2017
19:28:59
потому что мне интересно

Yan?
14.01.2017
19:29:02
Расширить кругозор

Diskord
14.01.2017
19:29:22
и потому что может пригодиться, и потому что работу искать надо

Denis
14.01.2017
19:29:23
В документации тогда

Diskord
14.01.2017
19:29:27
причин много
ясно, спс

Проксимов
14.01.2017
20:54:30
Столкнулся с такой задачей:
Есть два списка, содержащих две или одну заглавную или строчную буквы, например ['A', 'a'] и ['a', 'A'], нужно конкатенировать все строки во всех возможных комбинациях , тут , например должно получиться: 'Aa', 'AA', 'Aa', 'aa'. Как реализовать?

Google

Roman
14.01.2017
20:55:51
Столкнулся с такой задачей:
Есть два списка, содержащих две или одну заглавную или строчную буквы, например ['A', 'a'] и ['a', 'A'], нужно конкатенировать все строки во всех возможных комбинациях , тут , например должно получиться: 'Aa', 'AA', 'Aa', 'aa'. Как реализовать?
itertools.product

Проксимов
14.01.2017
20:56:57

b0g3r
14.01.2017
21:11:45
Столкнулся с такой задачей:
Есть два списка, содержащих две или одну заглавную или строчную буквы, например ['A', 'a'] и ['a', 'A'], нужно конкатенировать все строки во всех возможных комбинациях , тут , например должно получиться: 'Aa', 'AA', 'Aa', 'aa'. Как реализовать?
А где столкнулся?
Если в обучающем курсе - то не стоит следовать совету с итертулс, а стоит вернуться на пару уроков назад и пересмотреть видео, пытаясь понять, как оно может тебе помочь
То есть в реальности для решения этой задачи правильнее использовать product, в случае обучения - писать свой велосипед (благо он совсем несложный)

Roman
14.01.2017
21:14:44
в целом, согласен

Mihail
14.01.2017
21:50:03
Приветствую. Я новичок. Посодействуете?

here1am
14.01.2017
21:50:10
нет
уходи

Mihail
14.01.2017
21:50:16
Ок.

here1am
14.01.2017
21:50:42
на самом деле надо сразу вопрос задавать

Roman
14.01.2017
21:51:40

Mihail
14.01.2017
21:51:46
Без проблем. На Питон 3.6, Window. Не могу установить pycurl.
Скажите какая... я без порблем перейду туда.

here1am
14.01.2017
21:53:30
в описании

Mihail
14.01.2017
21:53:31
Может раз я уже здесь все же обсудим мою проблему?

b0g3r
14.01.2017
21:54:09
@python_beginners