On 18/11/2015 22:11, Ian Kelly wrote:
On Wed, Nov 18, 2015 at 2:08 PM, fl <rxjw...@gmail.com> wrote:
Hi,
I have tried the below function and find that it can remember the previous
setting value to 'val'. I think the second parameter has something on this
effect, but I don't know the name and function of '=[]' in this application.
Could you explain a little to me?
Thanks,
def eList(val, list0=[]):
list0.append(val)
return list0
list1 = eList(12)
list1 = eList('a')
The list0 parameter has a default value, which is [], an initially
empty list. The default value is evaluated when the function is
defined, not when it is called, so the same list object is used each
time and changes to the list are consequently retained between calls.
That is really bizarre behaviour.
So, looking at some source code, a default value for certain types is
only certain to be that value for the very first call of that function?
> The default value is evaluated when the function is
> defined, not when it is called
Given the amount of pointless dynamic stuff that goes on in Python, I'm
surprised they've overlooked this one!
It seems simple enough to me to check for a missing parameter, and to
assign whatever default value was designated ([] in this case). (How
does the default mechanism work now?)
--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list