Let's say i get a string to eval
temperature*x
And I have two sets of variables - the easy one:
easy_ns = {'x':3, 'y':4}
And a harder one:
harder = ['temperature', 'sumofall']
Each of which will take significant time to calculate and I don't want to calculate them unless they are part of the user supplied expression
E.g. I don't want to start the detection of "temperature" unless I know it is required
I may have some variables in my namespace that are "inexpensive" but others I would like to postpone calculating as much as possible
How do I get a list of variables from my eval string before it is evaluated
I know I can try: eval() except: and I will get a:
NameError: name 'temperature' is not defined
Is there a pythonic way of extracting the exact variable name?
Is there a nice way to build your namespace for lazy evaluation?
Something like
namespace = {'x':3, 'y':4, 'temperature':lazy_temperature_function}
So that only when my expression is evaluated
res=eval('temperature*x')
is my lazy temperature function called
And yes of course - I absolutely do have to use 'eval' - that is why I have posted these questions
The scenario is that I get an input file with set of keys and values and then the user can supply an expression he wants me to calculate from a combination of those values and some generated variables that I do not want to calculate unless the user includes them in his/her expression
astis for.__getitem__.