Форум сайта python.su
0
1. Когда создаем обычную функцию, ее имя помещается в глобальный scope? Или в глобальное пространство имен?
2. В чем разница между глобальным scope и глобальным namespace, кстати?
3. lambda вызывается только один раз. Что это значит? Если я вызываю ее в цикле, то на каждой итерации она создается заново (новый анонимный объект-функция) и без сохранения внутреннего состояния (я, правда, пока не нагугливал примеров, где в lambda в теле больше одной операции)?
Офлайн
186
> ее имя помещается в глобальный scope?
Что такое scope?
Офлайн
253
RodegastНичего не значит. Ее можно вызвать сколько угодно раз.
lambda вызывается только один раз. Что это значит?
a=lambda :print("qq") a() a()
fshshshГде хотите там и помещаете.
Когда создаем обычную функцию, ее имя помещается в глобальный scope?
def a(): def b(): pass
Отредактировано doza_and (Авг. 25, 2016 11:17:22)
Офлайн
0
RodegastОбласть видимости.
> ее имя помещается в глобальный scope?Что такое scope?
doza_andПример кажется не иллюстративным - непонятно отличие от обычной именованной функции. Можно ли неименованную лямбду вызывать в цикле, без связывания ее с переменной? А в аргументе функции?
Ничего не значит. Ее можно вызвать сколько угодно раз.
Отредактировано fshshsh (Авг. 25, 2016 19:24:46)
Офлайн
88
fshshshПроще проверить.
Можно ли неименованную лямбду вызывать в цикле, без связывания ее с переменной?
def a(): for i in range(10): print((lambda x: x * 10)(i))
dis.dis(a)
2 0 SETUP_LOOP 42 (to 45)
3 LOAD_GLOBAL 0 (range)
6 LOAD_CONST 1 (10)
9 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
12 GET_ITER
>> 13 FOR_ITER 28 (to 44)
16 STORE_FAST 0 (i)
3 19 LOAD_GLOBAL 1 (print)
22 LOAD_CONST 2 (<code object <lambda> at 0x038AF3E0, file "<pyshell#12>", line 3>)
25 LOAD_CONST 3 ('a.<locals>.<lambda>')
28 MAKE_FUNCTION 0
31 LOAD_FAST 0 (i)
34 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
37 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
40 POP_TOP
41 JUMP_ABSOLUTE 13
>> 44 POP_BLOCK
>> 45 LOAD_CONST 0 (None)
48 RETURN_VALUE
dis.dis(lambda x: x * 10)
1 0 LOAD_FAST 0 (x)
3 LOAD_CONST 1 (10)
6 BINARY_MULTIPLY
7 RETURN_VALUE
Отредактировано Shaman (Авг. 25, 2016 20:04:22)
Офлайн
186
> Область видимости.
Вот так бы сразу и написали.
> Можно ли неименованную лямбду вызывать в цикле, без связывания ее с переменной? А в аргументе функции?
lambda обычно используют как аргумент функции высшего порядка.
Офлайн