How to set custom locals for function call?
Terry Reedy
tjreedy at udel.edu
Tue Sep 1 18:57:09 EDT 2020
On 9/1/2020 5:58 PM, Andras Tantos wrote:
>
> On 9/1/2020 12:41 PM, MRAB wrote:
>> CPython is able to identify all of the local names of a function and,
Note >>>of a function<<<.
>> basically, for reasons of efficiency, it uses slots for the local
>> names instead of an actual dict. 'locals()' just returns a dict that
>> represents those local names and their current values, but modifying
>> that dict has no effect on the actual local names. In short, there
>> isn't really a local dict that you can replace.
This applies to code in a function (def statement or lambda expression)
and only that.
[Snip experiments with non-function code at >>> prompt.]
> In other words, I can indeed change the value of a local variable
> through the locals() dict.
This is true for code that is not part of a function body, which is top
level code and class code that is not part of a method body.
--
Terry Jan Reedy
More information about the Python-list
mailing list