Why doesn't eval of generator expression work with locals?
Fabio Zadrozny
fabiofz at gmail.com
Tue Jan 27 19:36:05 EST 2009
> I think you can work around your problem by using the same dictionary for
> both locals and globals. The locals/globals distinction is not useful in
> your circumstances. For example, the Python interpreter has these the same:
>
> >>> globals() is locals()
> True
>
Interesting... In my case, what I actually do (in the Pydev debugger)
is that I find the frame where the code should be evaluated and then
with the selected frame I do:
frame = findframe(...)
...
eval(expression, frame.f_globals, frame.f_locals)
So, in that case, you think that instead of using frame.f_globals I should use:
updated_globals = dict()
updated_globals.update(frame.f_globals)
updated_globals.update(frame.f_locals) #locals later because it has
precedence over the actual globals
eval(expression, updated_globals, frame.f_locals)
Is that it? -- I think that eval(expression, frame.f_locals,
frame.f_locals) wouldn't work as expected in my actual case... (and I
can't force the frame.f_globals and frame.f_locals to be the same)
Thanks,
Fabio
More information about the Python-list
mailing list