
Sergey
26.04.2017
06:22:50

Zart
26.04.2017
06:23:24
try:
....
except ...:
log.exception('Fucked up doing SO and SO')

Sergey
26.04.2017
06:24:46
Logging хорошая вещь

Vladislav
26.04.2017
06:25:25
Ладно, не стоило сюда такой вопрос писать) под шаблоном имел ввиду это то чем вы сами пользуетесь что бы логировать ошибки в своем коде

Google

Zart
26.04.2017
06:25:48
таки ошибки или исключения?
log.exception - это метод который по факту вызывает log.error(..., exc_info=1)
любой метод логгинга - log/debug/info/critical/warn/error может сохранить вместе с сообщением трейсбак

Vladislav
26.04.2017
06:27:13
Я вроде писал только про ошибки

Zart
26.04.2017
06:27:26
"трейсбек в том числе"
добавив кейвордный аргумент exc_info=1 можно заставить сохранить текущий трейсбек

Vladislav
26.04.2017
06:28:05

Zart
26.04.2017
06:32:37
>>> import logging
>>> logging.basicConfig(level=0, format='%(levelname)s %(name)s: %(message)s')
>>> try:
... 0/0
... except Exception:
... logging.debug('fuckup')
...
DEBUG root: fuckup
>>> try:
... 0/0
... except Exception:
... logging.debug('fuckup', exc_info=1)
...
DEBUG root: fuckup
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ZeroDivisionError: division by zero
exc_info должен быть равен либо туплу исключения, либо быть тру значением, в этом случае оно автоматом вызовет sys.exc_info()

Vladislav
26.04.2017
06:37:57

Green
26.04.2017
06:39:14
Добрый день, можете пожалуста обяснить следующий код:
'name = ['One', 'Two', 'Tree']
for x in name:
name.remove(x)
name.append('Great ' + x)
print(name)'

Zart
26.04.2017
06:39:43
этот код работать не должен

Green
26.04.2017
06:39:46
выводится следующиее

Google

Green
26.04.2017
06:39:53
['Two', 'Great One', 'Great Great Tree']

Pavel
26.04.2017
06:40:42
Фу такое писать

Zart
26.04.2017
06:41:08
мутация списка во время его итерации приводит к неопределенному поведению

Green
26.04.2017
06:43:05
Хорошо, а как сделать так, чтобы в начало в каждого элемента списка он добавлял "Great"

Zart
26.04.2017
06:43:38
name = ['Great ' + n for n in name]
если необходимо чтобы список остался прежним, то присвоить в слайс

Green
26.04.2017
06:44:48
Спасибо

Daniel
26.04.2017
06:47:11

Расписная Черепашка
26.04.2017
06:47:21
В связи с недавними событиями в чате http://telegra.ph/import-drama-04-19
данный диалог остался без администраторов, в следствии этого советуем перейти в новый аналогичный диалог - @ru_python_beginners

Zart
26.04.2017
06:47:29

Расписная Черепашка
26.04.2017
07:16:34
Привет!
В связи с недавними событиями в чате http://telegra.ph/import-drama-04-19
данный диалог остался без администраторов, в следствии этого советуем перейти в новый аналогичный диалог - @ru_python_beginners

Oleg
26.04.2017
07:17:40

Sergey
26.04.2017
07:18:57

DiffieHellman [BlueCode] C#
26.04.2017
07:49:52
как в bash много строчный комментарий сделать?

Zart
26.04.2017
07:51:44
кучей однострочных

.
26.04.2017
07:52:23
Гайс, если я проюзал open, но не сохранял это ни в какую переменную, нужно ли закрывать соединение и если нужно, то как?

Zart
26.04.2017
07:52:49
опен откуда?

Daniel
26.04.2017
07:53:20

.
26.04.2017
07:53:55
' '.join(''.join(open('/tmp/test/inventory', 'r').read().split('\n')).split(' '))

Daniel
26.04.2017
07:53:55
если open with~ то close не нужен

Google

Daniel
26.04.2017
07:54:42
и лучше делать через open with это хороший тон

Zart
26.04.2017
07:54:50
D:\>py -3 -c "print(len(open('1.py').read()))"
382
D:\>py -3 -Wd -c "print(len(open('1.py').read()))"
-c:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='1.py' mode='r' encoding='cp1251'>
382

.
26.04.2017
07:57:22
спасибо

Даниил
26.04.2017
09:02:25

Oleg
26.04.2017
09:02:52
Лови звезду )

Daniel
26.04.2017
09:03:14

Даниил
26.04.2017
09:05:16
У меня большинство звезд сами по себе пришли
Я никто не просил

Константин
26.04.2017
09:13:44
есть такой вот декоратор:
@bot.message_handler(regexp=r'')
def image_link(message):
вопрос: как мне из image_link получить доступ к regexp ?

Zart
26.04.2017
09:15:03
что за фреймворк?

Константин
26.04.2017
09:15:22
это pytelegrambot-api
обертка для телеграм-ботов
фреймоврка никакого

Pavel
26.04.2017
09:18:12
изнутри декорируемой функции получить доступ к декоратору очень трудно.

Константин
26.04.2017
09:18:55
вообще, наверное правильней будет глобально такие вещи объявлять и юзать, или нет?

Zart
26.04.2017
09:21:12
@bot.message_handler(regexp=...)
def myhandler(message):
regexp = next(info['filters']['regexp'] for info in bot.message_handlers if info['function'] is myhandler)
это говно и так глобальное. фу.

Google

Daniel
26.04.2017
09:24:12
кто-нибудь делал фабрику декораторов? дайте почитать ваш код, если не жалко

Nik
26.04.2017
09:32:16

Константин
26.04.2017
09:33:11

Nik
26.04.2017
09:33:45

Artem
26.04.2017
09:39:57

Pavel
26.04.2017
09:42:25

Artem
26.04.2017
09:43:02
это правда

Zart
26.04.2017
09:43:17
в двойке этой функции нет 8)

Petro
26.04.2017
10:02:18
pyinstaller нормально собирает экзешник для проектов с GUI? Qt? wx?

Sergey
26.04.2017
10:05:06
Это такое себе дело

Petro
26.04.2017
10:06:37
М?

Sergey
26.04.2017
10:07:39
Я как то раз попробовал, либо танцевать с бубном надо либо вообще ничего не выйдет

Zart
26.04.2017
10:15:33
нюансов хватает, но в целом возможно

Petro
26.04.2017
10:25:18
Спасибо

Maksim
26.04.2017
11:12:27
кто пользовался heroku и как вы прописывали пути к файлам?
app = Flask(__name__, instance_path='/path/to/instance/folder')
путь к каталогам проекта

Ivan
26.04.2017
11:46:37
Всем привет! )

Маришка
26.04.2017
11:47:02
Можно не скрином код?

Ivan
26.04.2017
11:47:08
Я правильно понимаю, что первая функция исполняется 25 раз, а вторая - только 5 раз ?

Google

Маришка
26.04.2017
11:47:15
gist.github.com или pastebin.com

Ivan
26.04.2017
11:48:00
In [164]: def create_multipliers():
...: multipliers = []
...: for i in range(5):
...: def multiplier(x):
...: return i * x
...: multipliers.append(multiplier)
...: return multipliers
...:
In [165]: for multiplier in create_multipliers():
...: print(multiplier(2), end = " ... ")
...:
8 ... 8 ... 8 ... 8 ... 8 ...
In [166]: def create_multipliers():
...: return [lambda x, i=i : i * x for i in range(5)]
...:
In [167]: for multiplier in create_multipliers():
...: print(multiplier(2), end = " ... ")
...:
0 ... 2 ... 4 ... 6 ... 8 ...
вы тут выпендриваться собрались или реально помогать?

Скрудж
26.04.2017
11:49:18
тебе же сказали как код закинуть

Маришка
26.04.2017
11:49:20
Так выхлоп же получаешь

Zart
26.04.2017
11:49:28


Ivan
26.04.2017
11:53:06
Зачем? Увидел это в книге Hitchhiker Guide to the Python
лямбды сложно даются, пытаюсь разобраться

Zart
26.04.2017
11:53:51
ну и похожей ерунды можно добиться например через
multipliers = [functools.partial(operator.mul, x) for x in range(5)]
картинку не качал, если что

Ivan
26.04.2017
11:55:20
ммм, этим варианты тоже годятся. Т.е. лямбды можно вообще не использовать.. Спасибо)

Alex
26.04.2017
11:55:21
здравствуйте.
вызывает интерес вот такой еще разрез:
Вот у меня есть класс Магазин и класс Товар. И есть БД, где лежат товары.
Рассуждая логически, методы "добавить_товар", "удалить_товар" и в таком духе я добавляю в класс Магазин.
Класс Товар просто для вывода, передачи туда-сюда и не более того.
Я правильно рассуждаю?

Ivan
26.04.2017
11:55:23
Спасибо

Petro
26.04.2017
12:00:50
Эта группа больше не существует