gentoo.ru
python
python@conference.gentoo.ru
Воскресенье, 27 марта 2011< ^ >
maksbotan установил(а) тему: Пей тон @ Жуй картон || https://gist.github.com/289467 || Логи: http://tinyurl.com/gentoo-py-logs || "Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck."
Конфигурация комнаты
Участники комнаты

GMT+3
[00:18:01] <lk4d4> ботан, а ты какую-нибудь книжку по питону читал?
[00:18:05] <maksbotan> читал
[00:18:14] <maksbotan> Learning Python O'Reilly
[00:18:26] <maksbotan> и ещё "ЯП Python" какого-то русского автора
[00:19:16] <krigstask> Сузи
[00:19:22] <maksbotan> да
[00:19:30] <maksbotan> причем её первой
[00:19:42] <lk4d4> о, она у меня кстати есть
[01:23:11] maksbotan вышел(а) из комнаты
[10:52:00] maksbotan вошёл(а) в комнату
[11:40:09] maksbotan вышел(а) из комнаты
[12:40:46] maksbotan вошёл(а) в комнату
[12:55:36] <maksbotan> krigstask: ты когда-нибудь делал в своих классах менеджеры контекста?
[13:00:06] <krigstask> Нет
[13:00:11] <krigstask> Это что за хрень?
[13:01:01] <maksbotan> это __enter__/__exit__
[13:01:07] <maksbotan> для использования в with
[13:01:15] <krigstask> А-а-а
[13:01:16] <maksbotan> хотя я уже подумал что это не катит
[13:01:27] <krigstask> Меня with не прёт вообще
[13:01:41] <maksbotan> почему?
[13:01:54] <maksbotan> по мне так хорошая штука
[13:02:15] <krigstask> Почему?
[13:02:27] <maksbotan> эммм
[13:02:31] <krigstask> Можно запихнуть весь код под лишний отступ?
[13:02:49] <maksbotan> ну например не нужно следить не произошло ли исключения и закрывать файлы
[13:02:53] <maksbotan> сами закроются
[13:04:39] <maksbotan> krigstask: ладно, фиг с ним с with. у меня такой вопрос есть
[13:05:12] <maksbotan> вот я хочу запилить декоратор, который перед вызовом функции открывает сокет, вызывает функцию с этим сокетом, а потом сам закрывает
[13:05:26] <maksbotan> чтоб внутри функции не закрывать его рядом с каждым return
[13:05:28] <maksbotan> это норм?
[13:05:51] <krigstask> Вроде нормально
[13:05:56] <maksbotan> о, замечательно
[13:06:00] <maksbotan> одну проблемку решил
[13:09:17] <maksbotan> http://paste.pocoo.org/show/360266 так пойдет?                                                                
[13:10:54] <krigstask> Ты не перепил? Куда тебе столько вложенных-то?
[13:11:14] <maksbotan> так ведь делаются декораторы с параметрами
[13:11:16] <maksbotan> ты чо
[13:11:24] <maksbotan> хехе, ретурны забыл
[13:11:58] <maksbotan> внешняя функция создает функцию-декоратор с данными параметрами
[13:12:09] <krigstask> Ну смотри, как знаешь
[13:12:12] <maksbotan> питон вызывает эту функцию, передавая ей декорируемую
[13:12:28] <maksbotan> она в свою очередь возвращает то, что надо вызывать вместо функции
[13:12:31] <maksbotan> я где-то читал же
[13:17:28] <maksbotan>             return render_template("msg_confirm.html", wtc=wtc - 1)
[13:17:36] <maksbotan> здесь пробелы у '-' нужны ?
[13:40:59] <krigstask> Нет
[13:41:26] <krigstask> Хотя лучше проверь
[13:42:07] <maksbotan> в пеп 8?
[13:43:27] <krigstask> Ну да
[13:44:32] <maksbotan>     - Use spaces around arithmetic operators:
[13:44:49] <maksbotan> хотя мне кажется пробел там только мешается
[13:46:48] <krigstask> Думаю, что это тот же случай, что и с отсутствием пробелов вокруг =
[13:46:49] <maksbotan> пойду на #python спрошу
[13:47:21] <maksbotan> ааа блин, у меня ж ревью скоро
[13:47:32] <krigstask> Давай, и отписаться не забудь
[13:47:36] <maksbotan> ок
[13:47:41] <krigstask> Будто спросить долго
[13:47:50] <maksbotan> <maksbotan> hi
<maksbotan> do i have to use whitespaces around arithmetic operators inside function calls?
<maksbotan> i mean f(a-1) vs. f(a - 1)
<asdf`> maksbotan: you don't have to
[13:47:53] <maksbotan> вот так вот
[13:48:01] <maksbotan> <kerrick> maksbotan, whitespace almost never matters
[13:49:15] <maksbotan> <MostAwesomeDude> maksbotan: You don't have to, but you should.
[13:49:20] <maksbotan> и вот кому блин верить
[13:52:47] <krigstask> Спроси про именованный аргумент конкретно
[13:53:44] <maksbotan> спрашиваю
[13:54:28] <maksbotan> <maksbotan> pep8 says to omit space around '=' in function call
<maksbotan> so f(a=i - 1) looks very silly
<empity> true, maybe f(a=(i - 1))
<empity> but I agree it looks stupid
<empity> no need to follow it absolutely
[13:55:05] <lk4d4> гвидо напиши
[13:55:11] <lk4d4> мол что за бред
[13:55:27] <maksbotan> гг
[13:56:32] <lk4d4> кстати вот насчет with, мне тоже нравится, но лишний отступ не нравится
[13:56:40] <lk4d4> каждый пробел на счету
[13:57:01] <maksbotan> хаха
[13:57:09] <krigstask> Я with пользуюсь тольк на короткие блоки кода
[13:57:55] maksbotan наклепал няшных декораторов и рад
[13:58:27] <krigstask> s:декораторов:уродливых функций тройной вложенности
[13:58:43] <maksbotan> кригэ
[13:58:50] <maksbotan> напиши мне декоратор без вложенности
[14:01:57] <krigstask> Завтра посмотрим
[14:02:03] <krigstask> В выходной что-то неохота
[14:03:40] <maksbotan> http://www.python.org/dev/peps/pep-0318/
[14:03:47] <maksbotan> Examples, пункт 4
[14:03:49] <maksbotan> смотри
[14:05:14] <krigstask> Ужасы какие
[14:05:21] <lk4d4> вот криг на работе похоже ничего не делает, а по выходным жутко занят
[14:05:26] <maksbotan> внешняя — конструктор, средняя — декоратор, внутренняя — заменитель
[14:05:27] <maksbotan> чо
[14:05:44] <maksbotan> krigstask: не будешь же ты с пепом спорить
[14:06:34] <krigstask> Не буду, но поковырять надо
[14:07:14] <maksbotan> хаха
[14:07:14] <krigstask> Если так оно и есть, придётся настороженно относиться к декораторам
[14:07:48] <maksbotan> ишь ты какой
[14:07:54] <maksbotan> а по мне так очень удобная штука
[14:08:00] <maksbotan> если вкурить правильно
[14:08:39] <krigstask> Чтоб ты знал, создание и вызов функций — весьма дорогая операция
[14:09:15] <krigstask> [13:11:14] <maksbotan> так ведь делаются декораторы с параметрами
Третий пример что, без параметров?
[14:10:00] <maksbotan> третий не изменяет функцию во время выполнения
[14:10:02] <maksbotan> а статично
[14:10:26] <maksbotan> а мои декораторы работают с функцией при выполнении
[14:10:50] <krigstask> Ну-ну, гоняй тогда четыре создания/вызова функций вместо одного (-%Е
[14:11:05] <maksbotan> создание же только один раз происходит
[14:11:23] <maksbotan> и по имени функции хранится враппер с памятью о функции
[14:11:26] <krigstask> Вообще-то при каждом вызове декоратора создаётся новое замыкание
[14:12:05] <maksbotan> ну да
[14:12:18] <maksbotan> при создании всех функций оно четыре разам делается
[14:12:18] <krigstask> А при каждом вызове замыкания — ещё одно вложенное
[14:12:35] <maksbotan> а если я вызываю уже декорированную функцию
[14:12:40] <lk4d4> это фабрика декораторов называется
[14:12:44] <maksbotan> то никаких дополнительных фигонь
[14:12:46] <maksbotan> lk4d4: дада
[14:13:09] <krigstask> Да ну, а третье замыкание, самое вложенное?
[14:13:19] <maksbotan> блин же
[14:13:25] <maksbotan> ты делаешь так
[14:13:29] <maksbotan> def f(): pass
[14:13:30] <krigstask> И выполняется сколько функций?
[14:13:38] <maksbotan> dec = decorator(args)
[14:13:41] <maksbotan> f = dec(f)
[14:13:42] <maksbotan> и все
[14:13:54] <maksbotan> в f просто функция
[14:14:00] <maksbotan> можно вызвать, например
[14:14:04] <krigstask> Ни фига
[14:14:13] <maksbotan> как же нифига
[14:14:15] <krigstask> Не просто функция, а функция с замыканием
[14:14:27] <maksbotan> ну с замыканием, какая разница
[14:14:34] <maksbotan> оно же уже существует
[14:14:37] <krigstask> Да никакой, конечно
[14:14:37] <maksbotan> и не пересоздается
[14:14:57] <maksbotan> чето я вообще не въезжаю о чем ты
[14:15:06] <krigstask> Это бывает
[14:15:10] <maksbotan> я заметил
[14:15:33] <krigstask> А сейчас я ещё и под душ полезу, так и вообще останешься один на оди со своими фантазиями
[14:15:38] <krigstask> *на один
[14:16:40] <maksbotan> http://paste.pocoo.org/show/360282/
[14:17:09] <maksbotan> в конце-концов, не просто так же это придумали
[14:17:54] <lk4d4> ботан
[14:18:02] <lk4d4> ща погодь, идея у меня
[14:18:09] <maksbotan> не пугай меня так
[14:18:29] <lk4d4> хаха
[14:18:38] <lk4d4> а зачем ты делаешь фабрики, а не декораторы?
[14:18:57] <maksbotan> ты кодец-то читни
[14:19:17] <maksbotan> там на гитхабе все новенькое лежит
[14:23:38] <maksbotan> lk4d4: какая идея-то?
[14:23:55] <lk4d4> да я уж забыл
[14:24:17] <maksbotan> ну вот
[14:24:21] <maksbotan> вспоминай давай
[14:27:10] <lk4d4> а @wraps() это элитно?
[14:27:21] <maksbotan> дя
[14:27:33] <maksbotan> оно подменяет враппера аттрибуты __doc__ и т.п.
[14:27:42] <maksbotan> никто не отличит =)
[14:53:31] <lk4d4> мне кажется как-то сильно ты угорел по декораторам
[14:56:42] <maksbotan> а то
[14:56:50] <maksbotan> зато в функциях только чистая логика
[14:56:59] <maksbotan> и никакого повторения
[15:21:21] <maksbotan> ну что ж за хрень
[15:21:32] <maksbotan> уже второй раз оказывается что мой декоратор не применим
[15:27:53] <maksbotan> lk4d4: смотри какая красота
[15:27:56] <maksbotan> http://paste.pocoo.org/show/360319
[15:28:30] <lk4d4> кошмар какой
[15:28:54] <maksbotan> почему кошмар?
[15:30:36] <maksbotan> зато не нужно в каждой функции писать открытие каналов, отлов ошибок и закрытие
[15:31:32] <maksbotan> просто когда там ещё будет логика обработки, функция станет и без того огромной
[17:47:25] maksbotan вышел(а) из комнаты
[19:53:42] maksbotan вошёл(а) в комнату
[22:36:47] <maksbotan> Your code has been rated at 4.88/10 (previous run: 5.36/10)
[22:36:48] <maksbotan> зараза
[22:37:18] <krigstask> Ах-ха-ха
[22:37:27] <maksbotan> R: 29:gen_monitor: Too many local variables (42/15)
[22:37:29] <krigstask> Тройка тебе с минусом
[22:37:31] <maksbotan> чтоб ему пусто было
[22:44:55] <lk4d4> у меня тоже с этими переменными беда
[22:45:07] <maksbotan> хаха
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!