@python_beginnersЭта группа больше не существует

Страница 1691 из 1885
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 можно заставить сохранить текущий трейсбек

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()

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
Спасибо

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

Zart
26.04.2017
06:47:29
list[: ]= не?
оно, угу

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

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
опен откуда?

.
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
' '.join(''.join(open('/tmp/test/inventory', 'r').read().split('\n')).split(' '))
в CPython файл будет закрыт сразу же, но выругается в джитоне и айроне будет висеть открытым пока программа не завершится

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
Кинь ссыль :)
https://github.com/VKBots/VBot

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
вопрос: как мне из image_link получить доступ к regexp ?
а regexp у тебя разве не статичный будет?

Константин
26.04.2017
09:33:11
а regexp у тебя разве не статичный будет?
да, все верно, я написал выше

Nik
26.04.2017
09:33:45
да, все верно, я написал выше
damn, не пролистал вниз

Artem
26.04.2017
09:39:57
Pavel
26.04.2017
09:42:25
если очень нужно, можно так inspect.getclosurevars(fn).nonlocals
ящик пандорры открывается такими советами. :) Я не уверен, что поведение функции должно как-то зависеть от наличия декораторов.

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
нюансов хватает, но в целом возможно

pyinstaller нормально собирает экзешник для проектов с GUI? Qt? wx?
живой пример для начала: https://paste.fedoraproject.org/paste/Arwhqry9vHhY7c76SXgJVl5M1UNdIGYhyRLivL9gydE=

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
Так выхлоп же получаешь

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
здравствуйте. вызывает интерес вот такой еще разрез: Вот у меня есть класс Магазин и класс Товар. И есть БД, где лежат товары. Рассуждая логически, методы "добавить_товар", "удалить_товар" и в таком духе я добавляю в класс Магазин. Класс Товар просто для вывода, передачи туда-сюда и не более того. Я правильно рассуждаю?
Можно задать товару метод "удалиться" и методом магазина "удалить товар" вызывать в конце метод товара, например. Зависит от логики. У товара может быть метод "порча", который меняет свойства товара после определённой даты. А метод магазина "инвентаризация" может поочерёдно вызывать метод "порча" и другие сопутствующие.

Страница 1691 из 1885

Эта группа больше не существует Эта группа больше не существует