
Andrey
09.06.2016
21:13:20
Теперь понятно?

Марк
09.06.2016
21:14:00
Да, понятно и скучно

Andrey
09.06.2016
21:15:28

Google

Марк
09.06.2016
21:15:41
Хотя стопе. Не совсем

Andrey
09.06.2016
21:16:26
Бывает.

Марк
09.06.2016
21:16:48
Куда 10 делось?

Zart
09.06.2016
21:17:02
в ретурне вон

Andrey
09.06.2016
21:17:07

Марк
09.06.2016
21:17:36
n [60]: a = lambda x:x[10]
In [61]: a
Out[61]: <function __main__.<lambda>>
In [62]: a.
a.func_closure a.func_defaults a.func_doc a.func_name
a.func_code a.func_dict a.func_globals

Zart
09.06.2016
21:18:26
и

Марк
09.06.2016
21:18:39
Откуда 10 выковыривать?

Zart
09.06.2016
21:19:07
она вныкано в виде байткода в a.func_code
но для тебя это слишком рано

Марк
09.06.2016
21:20:29
In [68]: a.func_code
Out[68]: <code object <lambda> at 0xb5f83ba8, file "<ipython-input-60-5ea4d3fe9a78>", line 1>

Zart
09.06.2016
21:21:39
>>> import dis
>>> a = lambda x:x[10]
>>> dis.dis(a.func_code)
1 0 LOAD_FAST 0 (x)
3 LOAD_CONST 1 (10)
6 BINARY_SUBSCR
7 RETURN_VALUE

Марк
09.06.2016
21:22:08
шо такое dis?

Google

Zart
09.06.2016
21:22:13
вон твоя десятка палится в опкоде загрузки константы
дизассемблер

Марк
09.06.2016
21:22:24
Тю

Zart
09.06.2016
21:22:37
рано тебе. ты вон банальных выражений осилить не в состоянии, а лезешь под капот

Марк
09.06.2016
21:23:04
из под капота видней

Zart
09.06.2016
21:23:20
неа

Andrey
09.06.2016
21:24:17

Марк
09.06.2016
21:24:43
Вот такие вот штуки

Zart
09.06.2016
21:25:02
в разных версиях питона байткод может и будет различаться
>>> dis.dis(a.func_code)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files (x86)\IronPython 2.7\Lib\dis.py", line 43, in dis
File "C:\Program Files (x86)\IronPython 2.7\Lib\dis.py", line 65, in disassemble
File "C:\Program Files (x86)\IronPython 2.7\Lib\dis.py", line 184, in findlinestarts
NotImplementedError
а порой и вообще недоступен

Марк
09.06.2016
21:28:44
In [69]: a = lambda x:x[10]
Давайте так. Что вообще тут происходит? Я возвращаю лямбду с некой константой?
Что происходит в этой конструкции `x[10]```

Zart
09.06.2016
21:30:44
ты создаешь анонимную функцию, которая принимает аргумент x
а возвращает x[10]
и ты этой функции даешь имя a

Марк
09.06.2016
21:31:44
Я возвращаю себя с аргументом 10

Andrey
09.06.2016
21:31:46

Марк
09.06.2016
21:31:47
Так?

Zart
09.06.2016
21:32:09
никаких "себя" там нет

Google

Марк
09.06.2016
21:33:14
Ну стопе, там возврат в виде лямбды идет, то есть себя

Omni
09.06.2016
21:33:24

Марк
09.06.2016
21:36:12
In [72]: a = lambda x:x[10][10][10][lambda x:5]
Бляяя

Zart
09.06.2016
21:37:01
и вообще, в питоне функции - полноправные объекты

Марк
09.06.2016
21:37:25
Угу, как и все остальное

Omni
09.06.2016
21:37:44

Марк
09.06.2016
21:38:12
У мну отлично работает. Правда, хз как

Omni
09.06.2016
21:38:36
Могу ошибаться.

Zart
09.06.2016
21:39:14
потому что он только определяет этот пиздец, но не вызывает

Omni
09.06.2016
21:39:49
А, да
Четырёхмерные листы. Аж вздрогну...

Zart
09.06.2016
21:41:23
так как он пытается дернуть по значению свежесозданной лямбды, то самым вероятным исходом будет индексеррор или кейеррор

Zart
09.06.2016
21:41:40
но не факт

Марк
09.06.2016
21:43:16
In [76]: a = lambda x:x[10][10][10][lambda x:5]
In [77]: a.
a.func_closure a.func_defaults a.func_doc a.func_name
a.func_code a.func_dict a.func_globals
In [77]: a
Out[77]: <function __main__.<lambda>>
Все без ошибок

Omni
09.06.2016
21:43:27

Zart
09.06.2016
21:44:09

Omni
09.06.2016
21:44:48
```
>>> a=[1,2,3]
>>> a[lambda x:1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not function```

Google

Omni
09.06.2016
21:47:24
Чисто поиграться

Марк
09.06.2016
21:47:40
In [102]: a = lambda x:x[10][20][30][lambda x:5]
In [103]: a({})
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/home/devel/dev_python/<ipython-input-103-78794bc2eb92> in <module>()
----> 1 a({})
/home/devel/dev_python/<ipython-input-102-7df00e644ba3> in <lambda>(x)
----> 1 a = lambda x:x[10][20][30][lambda x:5]
KeyError: 10
Забавно
Но вызвать не удается, да
Тут вообще реально как-то обратиться к элементам?
Или просто как-то валидно вызвать

Admin
ERROR: S client not available

Andrey
09.06.2016
21:50:16
Ты пишешь какое-то изращение, а после говоришь, что это извращение нереально использовать. Странный ты.

Марк
09.06.2016
21:51:04

Andrey
09.06.2016
21:51:23

Марк
09.06.2016
21:58:19
Ч0т нихера не получается вызвать

Zart
09.06.2016
22:12:01
>>> a = lambda x:x[10][20][30][lambda x:5]
>>> class foo:__getitem__=lambda s,k:s
...
>>> a(foo())
<__main__.foo instance at 0x028FD940>
defaultdict можно скормить наверное

Марк
09.06.2016
22:13:38
Ч0т и в рассовом чатиге молчат. Хотя мб спят все

Andrey
09.06.2016
22:38:44

Zart
09.06.2016
22:38:54
может
кто ей помешает?

Andrey
09.06.2016
22:40:02

Zart
09.06.2016
22:40:26
а какая разница? в примере выше я создал объект с собственной обработкой гетитема

Google

Zart
09.06.2016
22:40:52
>>> def f1():
... return 'f1'
...
>>> def f2():
... return 'f2'
...
>>>
>>> {f1: f2}
{<function f1 at 0x027AED30>: <function f2 at 0x027AED70>}
функция в роли индекса встречается нечасто. например в мультиметодах

Andrey
09.06.2016
22:50:58

Zart
09.06.2016
22:51:31
в случае его кода - новый объект, поэтому оно такое бессмысленное

Марк
09.06.2016
23:33:58
Бессмысленное и интересное
Мы по факту имеем валидный код, валидную функцию, но не можем ее валидно вызвать
Задачка для собеседования

Фԉùཎыч⚠️
09.06.2016
23:35:56
Для валидного собеседования*

Zart
09.06.2016
23:36:13
можем
яжвызвал

Марк
09.06.2016
23:36:46
Я чет не понял, в каком месте там foo

Zart
09.06.2016
23:37:28
я создал хитрый класс, экземпляр которого подсунул твоей говнолямбде
оно его схавало и вернуло

Марк
09.06.2016
23:37:45
Так нечесно
Покеж решение

Zart
09.06.2016
23:38:30
>>> a = lambda x:x[10][20][30][lambda x:5]
>>> class foo:__getitem__=lambda s,k:s
...
>>> a(foo())
<__main__.foo instance at 0x028FD940>

Марк
09.06.2016
23:39:14
Карочи, это задача на собеседование точно
Эта группа больше не существует