<div dir="ltr"><div class="gmail_default" style="font-size:small">I'm guessing the reason is to remove the overhead of keeping the dictionary up to date during function execution when no Python code needs access to it.</div><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 27, 2019 at 8:10 PM Richard Damon <<a href="mailto:Richard@damon-family.org">Richard@damon-family.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 5/27/19 2:05 PM, Terry Reedy wrote:<br>
> On 5/27/2019 9:52 AM, Richard Damon wrote:<br>
>> On 5/27/19 9:12 AM, Terry Reedy wrote:<br>
><br>
>>> I believe that the situation is or can be thought of as this: there is<br>
>>> exactly 1 function locals dict.<br>
><br>
> per function invocation, or more generally, as Guido said, per stack<br>
> frame.  This part is obvious to me, but I should have been clearer.<br>
><br>
>>>   Initially, it is empty and<br>
>>> inaccessible (unusable) from code.  Each locals() call updates the<br>
>>> dict to a current snapshot and returns it.<br>
>>><br>
>> I had a similar concern, and one BIG issue with it being define this way<br>
>> is that you get a fundamental re-entrancy problem. If module a uses<br>
>> locals(), and then calls module b that uses locals(), module a has lost<br>
>> its usage.<br>
><br>
> No. Sorry about being unclear.<br>
><br>
Ok, if each function invocation gets its own dict, then the reentrancy<br>
issues go away.<br>
<br>
The fact that it isn't the 'active' dict, so you can't use it to modify<br>
the current state, but also you don't get a fresh copy each time (there<br>
is a single mutable dict that gets updated) seems to be an odd behavior<br>
and I can't see where it is an advantage to the user of the function, or<br>
where that makes it easier on the implementation. (But I could easy be<br>
missing something).<br>
<br>
-- <br>
Richard Damon<br>
<br>
_______________________________________________<br>
Python-Dev mailing list<br>
<a href="mailto:Python-Dev@python.org" target="_blank">Python-Dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-dev" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="https://mail.python.org/mailman/options/python-dev/steve%40holdenweb.com" rel="noreferrer" target="_blank">https://mail.python.org/mailman/options/python-dev/steve%40holdenweb.com</a><br>
</blockquote></div>