What is a function parameter =[] for?
Terry Reedy
tjreedy at udel.edu
Tue Nov 24 12:46:36 EST 2015
On 11/24/2015 9:34 AM, Antoon Pardon wrote:
I agree that the tutorial should talk about default argument objects
(which have values) instead of conflating 'object' with 'value'.
> Op 20-11-15 om 13:12 schreef Ned Batchelder:
>> I'm not sure what your goal is at this point. Are you:
>>
>> 1) still unsure what the behavior is, or
>> 2) trying to understand why it behaves that way, or
>> 3) hoping to change Python, or
>> 4) trying to convince us that your language is better, or
>> 5) something else?
>
> Maybe just have us recognize that some aspects of python indeed are bizarre.
The current behavior under discussion is: default argument expressions
are evaluated once at function creation time to produce default argument
objects that are bound to the function object. I do not see this as
bizarre.
> That there is nothing wrong with him thinking so.
I do recognize that some would prefer that default argument expressions
be treated differently, that
def f(a=expression): pass
be compiled to operate as the following does now
def f(a=None):
a = a if a is not None else expression
perhaps with None replaced with a hidden object() instance.
I find the continuing fuss over the choice that was made to be the
bizarre thing here.
--
Terry Jan Reedy
More information about the Python-list
mailing list