Una forma de crear un objeto de código es utilizar compile
función incorporada:
>>> compile('sum([1, 2, 3])', '', 'single')
<code object <module> at 0x19ad730, file "", line 1>
>>> exec compile('sum([1, 2, 3])', '', 'single')
6
>>> compile('print "Hello world"', '', 'exec')
<code object <module> at 0x19add30, file "", line 1>
>>> exec compile('print "Hello world"', '', 'exec')
Hello world
también, las funciones tienen el atributo de la función __code__
(también conocido como func_code
en las versiones anteriores) desde donde se puede obtener el código objeto de función:
>>> def f(s): print s
...
>>> f.__code__
<code object f at 0x19aa1b0, file "<stdin>", line 1>
¿Por qué utiliza exec? ¿Y qué pasa con pasar una cadena o archivo? –