1.
>>>
def
teste(x):
2.
...
def
mist(y):
3.
...
return
x
*
*
y
4.
...
return
mist
5.
...
6.
>>> oops
=
teste(
2
)
7.
>>> oops(
4
)
8.
16
As respostas demonstram a grande confusão conceptual que ainda existe. Mas vamos por partes. A sessão pode ser dividida em três partes. Na primeira, é definida uma função (teste) cujo corpo é formado pela definição de outra função (mist). A função teste devolve como resultado a função mist. Na segunda, é feita a atribuição
1.
oops
=
teste(
2
)
1.
nome
=
expressão
A sessão abaixo ilustra o que acabámos de dizer.
01.
>>> id(teste)
02.
4504739912
03.
>>> type(oops)
04.
<
class
'function'
=
"">
05.
>>> id(oops)
06.
4504740048
07.
>>> dir()
08.
[
'__builtins__'
,
'__doc__'
,
'__loader__'
,
'__name__'
,
'__package__'
,
'__spec__'
,
'oops'
, ‘teste']
09.
<
/
class
>
01.
>>>
import
inspect
02.
>>> inspect.getargspec(oops)
03.
ArgSpec(args
=
[
'y'
], varargs
=
None
, keywords
=
None
, defaults
=
None
)
04.
>>> inspect.getargspec(teste)
05.
ArgSpec(args
=
[
'x'
], varargs
=
None
, keywords
=
None
, defaults
=
None
)
06.
>>> inspect.getclosurevars(oops)
07.
ClosureVars(nonlocals
=
{
'x'
:
2
}, globals
=
{}, builtins
=
{}, unbound
=
set())
08.
>>> inspect.getclosurevars(teste)
09.
ClosureVars(nonlocals
=
{}, globals
=
{}, builtins
=
{}, unbound
=
set())
Sem comentários:
Enviar um comentário