lambdas vs functions: a bytecode question

Fernando Perez fperez528 at yahoo.com
Sat Dec 18 01:38:39 CET 2004


Hi all,

there are a couple of threads on lambdas today, which got me curious about
their differences as far as bytecode goes:

planck[~]|2> lf=lambda x: x**2
planck[~]|3> def ff(x): return x**2
         |.>
planck[~]|4> import dis
planck[~]|5> dis.dis(lf)
  1           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (2)
              6 BINARY_POWER
              7 RETURN_VALUE
planck[~]|6> dis.dis(ff)
  1           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (2)
              6 BINARY_POWER
              7 RETURN_VALUE
              8 LOAD_CONST               0 (None)
             11 RETURN_VALUE

Can someone explain to me what the extra two bytecodes at the end of the
function version (ff) are for?

This is just curiosity, please note that I am NOT making any arguments pro or
against lambdas, functions or anything else.

Cheers,

f




More information about the Python-list mailing list