I am trying to set the parameter 'a' below so that it can be used when I call 
eval:

>>> def gp_function():
...     return 1+a
... 
>>> print eval("gp_function()", {'a':123, 'gp_function':gp_function})

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
  File "<stdin>", line 2, in a_method
NameError: global name 'a' is not defined

Why isn't 'a' defined?
Shouldn't you be able to define the global variables with a dict passed to eval?
Is there an other way to do this, beside the two obvious: defining 'a' before 
calling gp_function and using a as an argument in gp_function?

In case you are wondering why I want this:
This is a simplification of a problem I ran into when experimenting with 
pyevolve. After running pyevolve: GTreeGP.getCompiledCode() I get some compiled 
code, and need to pass some arguments to it. Perhaps there is an easier way to 
do it...

Kind Regards
Emil
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to