how can I execute a function string
Rajarshi Guha
rajarshi at presidency.com
Wed Jan 14 09:25:28 EST 2004
On Mon, 12 Jan 2004 21:23:20 -0500, Francis Avila wrote:
> Rajarshi Guha wrote in message ...
>>Hi ,
>> I have some code that generates a function on the fly in a string.
>>At a later point in time I want to execute this function (which also
>>requires a parameters to be passed to it). So the code is something like
>>this:
[
> If you're very ambitious, you can generate an AST tree and compile that:
> see the compile module. In this simple case there's no advantage,
> however.
>
> I'll have to think about how to turn the raw source of a function
> definition into a callable. I'm not sure it's possible in a 100%
> reliable manner. Here's a first attempt (untested):
>
> def makecallable(source):
> """Return a function from string source.
>
> 'def <funcname>' must be the first tokens in source!
>
> """
> co = compile(source, '<makecallable()>', 'single') funcname =
> co.co_varnames[0] #This is VERY brittle!! fakelocals = {} exec co in
> globals(), fakelocals
> return fakelocals[funcname]
>
Well I was playing with Andrews curves which allows one to visualize a
vector of numbers in terms of a Fourier series. So basically I was
creating a string that ontained the Fourier representation of the vector
and then evaluating the resultant function.
I know this can be done simpler using loops - I jst wanted to see how I
could do this using a bit of code generation
More information about the Python-list
mailing list