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

Страница 40 из 1885
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

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

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

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

Марк
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
In [72]: a = lambda x:x[10][10][10][lambda x:5] Бляяя
Не прокатит. В последних скобках не 5, а сама функция, возвращающая 5

Марк
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>>

Все без ошибок

Zart
09.06.2016
21:44:09
TypeError, полагаю
куча вариантов, смотря что совать

Omni
09.06.2016
21:44:48
А теперь вызови её
Если не задолбаешься четырёхмерный массив данных создавать XD

``` >>> 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
Тут вообще реально как-то обратиться к элементам?
Реально, передай 4-х мерный массив

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

Марк
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
>>> a = lambda x:x[10][20][30][lambda x:5] >>> class foo:__getitem__=lambda s,k:s ... >>> a(foo()) <__main__.foo instance at 0x028FD940>
У тебя в определении a косяк. Функция не может быть индексом

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
Карочи, это задача на собеседование точно

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

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