Tail recursion to while iteration in 2 easy steps

Terry Reedy tjreedy at udel.edu
Mon Oct 7 16:42:40 EDT 2013


On 10/7/2013 1:15 PM, Alain Ketterlin wrote:
> Terry Reedy <tjreedy at udel.edu> writes:

>> 3. Python does not mandate how namespaces are implemented. CPython
>> uses both dicts and, for function local namespaces, internal C arrays.
>> So 'names' in code can become either string keys for dicts or integer
>> indexes for arrays.
>
> Well, yes, but that's an implementation detail, no?

That is why I switched from 'Python' to 'CPython'. But I note the 
following: in 2.x, 'from mod import *' in a function meant that the 
compile time mapping of name to index could not be used and that a 
fallback to dict was necessary. So another implementation might take the 
easier path and always use a dict for function locals. In 3.x, such 
import are limited to module scope so that functions can always use an 
array and indexes for function locals. So other implementations can take 
the hint and do the same without needing a dict fallback.

In other words, 3.x changed the language to facilitate the 
implementation detail.

-- 
Terry Jan Reedy




More information about the Python-list mailing list