F
Fernando Perez
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
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