Thanks, Adam. I guess the exec would be exec("some_func").
The result seems pretty similar to eval(), allthough eval() seems more
straight-forward if the aim is to assign the returned value ("Done") to a
variable.

eval('some_func("wasn\'t that cool")')
Hello World wasn't that cool
'Done'

in other words

s = eval('some_func("wasn\'t that cool")')
Hello World wasn't that cool
s
'Done'


2007/3/5, Adam Pridgen <[EMAIL PROTECTED]>:

here's the magic you are looking for:

func_str = \
'''
def some_func(value):
# youwould check value instance here and do something to it
    print "Hello World", value
    return "Done"
'''
exec(func_str)
f = locals()["some_func"]
print f("wasn't that cool!")

When you exec the str, it will create a function object, and then you
can obtain the object by accessing the object by kwd in the locals()
dictionary.  Guess it's not really magic, but I think it is still
pretty cool ;)  There also several variations to this method, but this
is the most readable IMHO.

Cheers,

Adam


On 3/2/07, Cecilia Alm < [EMAIL PROTECTED]> wrote:
> I know that there are several ways to execute a string which represents
a
> piece of python code.
>  Out of curiosity, is it only eval which returns a value? (as below,
where
> the string corresponds to a defined function).
>
>  >>> def addone(val):
>  ...     return val + 1
>  ...
>  >>> res = eval('addone(10)')
>
> Thanks!
>
>
>
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>




--
E. Cecilia Alm
Graduate student, Dept. of Linguistics, UIUC
Office: 2013 Beckman Institute

--
E. Cecilia Alm
Graduate student, Dept. of Linguistics, UIUC
Office: 2013 Beckman Institute
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to