A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2002-October/029742.html below:

[Python-Dev] Using defaultdict as globals/locals for eval()

[Python-Dev] Using defaultdict as globals/locals for eval()Geert Jansen geertj@boskant.nl
Fri, 25 Oct 2002 18:26:51 +0200
Dear Python developers,

I have a question about "dict" subclasses and eval() that I would kindly
like to ask.

The problem I have is the following: For a web content system in Python, I
am using Python's eval() function to run code embedded in templates.
Currently, the code failes with a NameError if a variable is referenced
inside the code that is not defined in the locals or globals dictionary.
Unfortunately, this is a rather common situation: one often uses variables
(like error codes) that aren't set all the time. Intializing these variables
is a tedious job so a default value would suit me nicely.

I created a derived class of the standard `dict' that fills in a default
value when a key is not found. This is exactly the same as Guido describes
in his "descintro" paper. I tried to use this dictionary as the "globals"
parameter with eval(). As Guido already describes in his paper, this doesn't
work. Quoting Guido: 

"The interpreter uses an internal function to access the dictionary, which
bypasses our __getitem__() override. I admit that this can be a problem
(although it is only a problem in this context, when a dict subclass is used
as a locals/globals dictionary); it remains to be seen if I can fix this
without compromising performance in the common case."

Is there a solution to this problem in sight? Or altenately, is there a way
I can find out which variables are used inside a compiled code block so I
can initialize non-specified variables? I have a vague memory that the
nested scopes feature has to determine at compile time which variables are
being used in a code block.

Thanks for your time!

Greetings,
Geert Jansen



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4