[Python-Dev] PEP 550 v4

Ethan Furman ethan at stoneleaf.us
Sat Aug 26 13:23:04 EDT 2017


On 08/26/2017 09:25 AM, Yury Selivanov wrote:
> On Fri, Aug 25, 2017 at 10:19 PM, Ethan Furman wrote:

>>> A *context variable* is an object representing a value in the
>>> execution context.  A new context variable is created by calling
>>> the ``new_context_var()`` function.  A context variable object has
>>> two methods:
>>>
>>> * ``lookup()``: returns the value of the variable in the current
>>>     execution context;
>>>
>>> * ``set()``: sets the value of the variable in the current
>>>     execution context.
>>
>>
>> Why "lookup" and not "get" ?  Many APIs use "get" and it's functionality is
>> well understood.
>
> ContextVar.set(value) method writes the `value` to the *topmost LC*.
>
> ContextVar.lookup() method *traverses the stack* until it finds the LC
> that has a value.  "get()" does not reflect this subtle semantics
> difference.

A good point; however, ChainMap, which behaves similarly as far as lookup goes, uses "get" and does not have a "lookup" 
method.  I think we lose more than we gain by changing that method name.

--
~Ethan~


More information about the Python-Dev mailing list