Python becoming less Lisp-like
Terry Reedy
tjreedy at udel.edu
Tue Mar 22 15:04:51 EST 2005
"Antoon Pardon" <apardon at forel.vub.ac.be> wrote in message
news:slrnd407gs.20i.apardon at rcpc42.vub.ac.be...
> And does this code object know which non-local names are on an
> intermediate level and which are global?
Yes (from 2.2):
>>> import dis
>>> x = 1
>>> def f():
... y = 2
... def g():
... z = 3
... print x,y,z
... return g
...
>>> dis.dis(f)
0 SET_LINENO 1
3 SET_LINENO 2
6 LOAD_CONST 1 (2)
9 STORE_DEREF 0 (y)
12 SET_LINENO 3
15 LOAD_CLOSURE 0 (y)
18 LOAD_CONST 2 (<code object g at 008BA060, file
"<stdin
>", line 3>)
21 MAKE_CLOSURE 0
24 STORE_FAST 1 (g)
27 SET_LINENO 6
30 LOAD_FAST 1 (g)
33 RETURN_VALUE
34 LOAD_CONST 0 (None)
37 RETURN_VALUE
>>> g = f()
>>> dis.dis(g)
0 SET_LINENO 3
3 SET_LINENO 4
6 LOAD_CONST 1 (3)
9 STORE_FAST 0 (z)
12 SET_LINENO 5
15 LOAD_GLOBAL 1 (x)
18 PRINT_ITEM
19 LOAD_DEREF 0 (y) # intermediate value
22 PRINT_ITEM
23 LOAD_FAST 0 (z)
26 PRINT_ITEM
27 PRINT_NEWLINE
28 LOAD_CONST 0 (None)
31 RETURN_VALUE
Terry J. Reedy
More information about the Python-list
mailing list