[Python-ideas] Mutable default arguments - another approach

Roman Susi rnd at onego.ru
Tue Jan 30 21:33:31 CET 2007


George Sakkis wrote:
> On 1/30/07, Piotr Duda <duda.piotr at gmail.com> wrote:
> 
> 
>>I think that this problem can be solved by the following change of
>>default argument behavior:
>>default arguments are evaluated in definition time (like in current
>>implementation), but right after being evaluated, result object is
>>checked if it's mutable (for example by checking of presence __copy__
>>special method or being instance of built in (sub)class
>>list/dict/set)
>>
>>(snipped)
>>
> 
> 
> AFAIK there's no reliable way of deciding whether an arbitrary object
> is mutable or not, so the rest of the post is irrelevant. Besides,
> mutable default arguments is just a specific use case; the general
> problem discussed here is call-time vs definition-time semantics for
> arbitrary default argument expressions (function calls, attribute
> lookups, etc.).
> 
> George

Maybe Python interpreter could be better at deciding if the programmer
which wrote the code is novice or experienced.

For example,

from __present__ import _I_AM_PYTHON_EXPERT

at the beginning of each module will do ;-)

Or, alternatively, Python interpreter will read user's directory for
some obscure configuration file where programmer will put True's into
originally:

I_KNOW_WHAT_MUTABLE_MEANS  = False
I_AM_AWARE_OF_MUTABLE_DEFAULT_ARGUMENT = False
...

(And of course, there will be secret

I_AM_GUIDO_VAN_ROSSUM = True

which will override all the previous settings.)

AFAIK, no language has this feature yet (not sure about Perl).


Regards,
Roman




More information about the Python-ideas mailing list