While trying to use Python\'s \"exec\" statement, I got the following error:
TypeError: exec: arg 1 must be a string, file, or code object
I do
One way to create a code object is to use compile
built-in function:
>>> compile('sum([1, 2, 3])', '', 'single')
at 0x19ad730, file "", line 1>
>>> exec compile('sum([1, 2, 3])', '', 'single')
6
>>> compile('print "Hello world"', '', 'exec')
at 0x19add30, file "", line 1>
>>> exec compile('print "Hello world"', '', 'exec')
Hello world
also, functions have the function attribute __code__
(also known as func_code
in older versions) from which you can obtain the function's code object:
>>> def f(s): print s
...
>>> f.__code__
", line 1>