What other languages use the same data model as Python?
Terry Reedy
tjreedy at udel.edu
Mon May 9 16:23:21 EDT 2011
On 5/9/2011 10:29 AM, Steven D'Aprano wrote:
>
> If people then ask, how does the interpreter know the names?, I can add
> more detail: names are actually strings in a namespace, which is usually
> nothing more than a dict. Oh, and inside functions, it's a bit more
> complicated still. And so on.
Which is why I think it best to stick with 'A namespace is a many-to-one
mapping (in other words, a function) of names to objects'. Any
programmer should understand the abstractions 'mapping' and 'function'.
Asking how the interpreter finds the object associated with a name
amounts to asking how to do tabular lookup. Well, we basically know,
though the details depends on the implementation of the table (mapping).
An interpreter can *implement* namespaces various ways. One is to
objectify names and namespaces as strings and dicts. If the set of names
in a namespace is fixed, another way is to objectify names and
namespaces as ints and arrays. Python prohibits 'from x import *' within
functions precisely to keep the set of local namespace names fixed.
Therefore, CPython can and does always use C ints and array for function
local namespaces.
--
Terry Jan Reedy
More information about the Python-list
mailing list