Is it explicitly specified?

Steve Holden steve at
Sun Feb 3 16:19:22 CET 2008

Diez B. Roggisch wrote:
> Bjoern Schliessmann schrieb:
>> mario ruggier wrote:
>>> It may sometimes be useful to make use of the conceptual
>>> difference between these two cases, that is that in one case the
>>> user did not specify any key and in the other the user explicitly
>>> specified the key to be None.
>> Do you have an example where this might be useful?
> Any situation in which there would otherwise lots of documentation 
> needed to inform the user that the sentinel value is something else than 
> None.
> Take something like this as an example:
> def update_user(some, values, nullable_value=sentinel):
>      # first, work with some and values
>      ...
>      # then, on something actually being passed to nullable_value
>      if nullable_value is not sentinel:
>         connection.cursor().execute("update table set value = ?", 
> nullable_value)
> I've seen this before, in code from e.g. Alex Martelli.
Sure, but the OP's question was "Is there any way to tell between 
whether a keyword arg has been explicitly specified (to the same value 
as the default for it)". We've drifted a long way from that, since the 
code you demonstrate doesn't detect an explicit call with 
nullable_value==sentinel -- the reason being, I submit, that there is no 
use case for such code.

Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC    

More information about the Python-list mailing list