
Serge
25.03.2016
16:27:32
def foo:
pass
bar = foo
какое имя у этой функции?
имя - это ссылка на объект функции. объект без ссылок на него... сам догадаешься?

GNU/Docker
25.03.2016
16:28:30
Причем здесь это?

Serge
25.03.2016
16:28:35
так устроен мир

Google

GNU/Docker
25.03.2016
16:29:00
А как же выглядит объект лямбды?

Serge
25.03.2016
16:29:00
лямбда в питоне != безымянная функция

GNU/Docker
25.03.2016
16:29:31
Ну это я не сомневался

Serge
25.03.2016
16:29:36
но на самом деле, на него ссылка есть;)

GNU/Docker
25.03.2016
16:30:17
Тут вопрос в том, чем отличается лямбда в один стейтмент и в несколько.

Serge
25.03.2016
16:30:51

Roman
25.03.2016
16:31:39

Serge
25.03.2016
16:31:40
в лямбду в питоне можно написать только нечто, что может стоять справа от знака присвоения

GNU/Docker
25.03.2016
16:32:59
Ну. Любая приличная лямбда возвращает значение последнего стейтмента.
Если ты говоришь что то что есть в питоне это лямбда, тогда я говорю что в питоне нет ООП.
Потому что это говно, построенное на говне и соглашениях.

Google

GNU/Docker
25.03.2016
16:33:47
__classname_varname

Serge
25.03.2016
16:33:50

GNU/Docker
25.03.2016
16:33:51
просто офигеть.
Это лямбда в питоне.
В питоне.

Serge
25.03.2016
16:34:20
__classname_varname
ааа.... ты не должен был об этом знать, об этом никто не должен знать, тссс....

GNU/Docker
25.03.2016
16:34:43
Лямбды да, полезные штучки. Если не плодить колбековый ад.

Serge
25.03.2016
16:34:59

Aleksandr
25.03.2016
16:35:27
Спагетти, все дела (

Roman
25.03.2016
16:35:31
вы мне скажите, зачем вам лямбды в питоне

GNU/Docker
25.03.2016
16:36:09
Ну. Это удобно.

Aleksandr
25.03.2016
16:36:12
С появлением comprehensions зачем?

Serge
25.03.2016
16:36:15

Roman
25.03.2016
16:36:32

Serge
25.03.2016
16:36:41

Aleksandr
25.03.2016
16:36:42
Если вариант:
foo = lambda x: x ...
vs
def foo(x):
pass
то имхо ... ) хз

GNU/Docker
25.03.2016
16:37:03
Нууу.
Зачем же так.

Aleksandr
25.03.2016
16:37:15
А так их всегда использовали во имя map/reduce, но зачем, если есть [x for x if x ...] ?

Serge
25.03.2016
16:37:34
да еще и с круглыми скобками

Google

Aleksandr
25.03.2016
16:37:40
Вообще круть )
А еще с фигураными )

GNU/Docker
25.03.2016
16:38:02
Например в маппингах.

Aleksandr
25.03.2016
16:38:09
Т.е?

GNU/Docker
25.03.2016
16:38:18
Действия на нажатия на кнопки.

Serge
25.03.2016
16:38:21
я тут, кстати, поюзал set comprehensions, прям вот впервые в жизни к месту пришлось;)

Aleksandr
25.03.2016
16:38:31
Ну ты даешь )

GNU/Docker
25.03.2016
16:38:46
вместо этого приходится городить кучу функций
которые зовутся только в одном месте.

Aleksandr
25.03.2016
16:39:06
@lig11 Ни разу не писал чтение из файла уникальных элементов? Или {f for f open('foo.txt'} ацтой? )

Serge
25.03.2016
16:39:18

GNU/Docker
25.03.2016
16:39:53
так и файл не закрыться может

Serge
25.03.2016
16:40:02

GNU/Docker
25.03.2016
16:40:20
или что-там. но слышал что не закрывать файлы нехорошо.

Aleksandr
25.03.2016
16:40:34
@PurrPurr это пример. Понятное дело что можно
with open() as f:
return {l for l in f}
К примеру. Не суть важна.

GNU/Docker
25.03.2016
16:41:04
Это уже слой абстракции, зачем ещё что-то городить.
и это правильно, а лучше callable классы использовать, чтобы конфигурить удобно было

Serge
25.03.2016
16:41:17
ну у меня вот не было кейсов чтения из файла уникальных элементов, честно говоря, сейчас. на фига бы оно было нужно?

Aleksandr
25.03.2016
16:41:55
@lig11 если тебе нужно прочитать из файла нечто, в чем ты будешь делать поиск.

Roman
25.03.2016
16:41:59

Google

Serge
25.03.2016
16:42:08

Aleksandr
25.03.2016
16:42:33
@lig11 лучше O(n) в случае полного коллизионного пиздеца, чем всегда O(n)

Serge
25.03.2016
16:42:56

Roman
25.03.2016
16:43:15

Serge
25.03.2016
16:43:24
ну, так а мы тут про set
{item.id for item in select_bla_bla_bla()}
а зачем так? а потому что сравнивать так можно с сетом и порядок неважен
а иначе придется sorted делать :)

Aleksandr
25.03.2016
16:45:03
И скорость ... и операции &, |, - ...

Roman
25.03.2016
16:45:04

Aleksandr
25.03.2016
16:45:18
@pragus медленно относительно чего?

Serge
25.03.2016
16:45:29

Roman
25.03.2016
16:45:50

Aleksandr
25.03.2016
16:45:57
э ...
Ну, задача такая. Данные в файле. Какое строить словарь на лету )

Serge
25.03.2016
16:46:15
хотя, вот интересно, будет ли быстрее set(f.readlines())
т.е. насколько {x for x in s} умный...
я подозреваю, что там set апдейтится постоянно, но, надеюсь, что это не так... надо смотреть реализацию.

Google

Aleksandr
25.03.2016
16:47:58
Это как-то будет плохо
Во всяком случае для меня unexpected

Roman
25.03.2016
16:48:12

Dmitry
25.03.2016
16:48:21
Апдейтится будет да

Pavel
25.03.2016
16:48:28
Построение set конструктором - быстрое.

Aleksandr
25.03.2016
16:48:42
Но с компрехеншенем экономим память?

Dmitry
25.03.2016
16:48:50
Причем перестраиваться после заполнения и увеличения

Aleksandr
25.03.2016
16:48:54
Так как за рад читаем одну строку.

Serge
25.03.2016
16:48:54
я чо то не помню... а был ли?:)

Aleksandr
25.03.2016
16:49:40
sizehint если дашь может он будет ленивым?

Pavel
25.03.2016
16:49:42
Оно будет апдейтиться, да, но все не выходя из скомпилированного кода.

Aleksandr
25.03.2016
16:50:07
Или sizehint только в стримах

Serge
25.03.2016
16:50:10

Roman
25.03.2016
16:51:45

Serge
25.03.2016
16:52:08
ну вот, хотя бы так

Pavel
25.03.2016
16:52:16
что сейчас имел в виду?
Что конструктор множества просто обычной процедурой добавления вставит все элементы, но это будет один вызов set(). Т.е. цикл этот написан на С. Если я все верно помню. )

Serge
25.03.2016
16:53:18

Pavel
25.03.2016
16:53:55
Не, я утверждаю это про set(fp.readlines())

Serge
25.03.2016
16:54:00
т.е. это как минимум означает, что оно будет честно стараться в память загрузить всё, что ему будет кормить s, пока оно не перестанет?