On 07Aug2016 09:19, Alan Gauld <alan.ga...@yahoo.co.uk> wrote:
On 07/08/16 04:22, rishabh mittal wrote:
I am new to python and come from C language background. I couldn't able to
understand this
>>> def f(a, L=[]):
... L.append(a)
... return L
print(f(1))
[1]
print(f(2))
[1, 2]
[...]
In the first example if i call function f then it looks like L is treated
as a static object which is not reinitialized in the subsequent function
calls.
That's more or less correct. The default object is created at definition
time and that same object is used for any invocation of the function
that does not provide an explicit value.
Just a further addition to Alan's explaination: because the default values are
defined at the same time that the function is defined, the common idom in
Python for default values looks like this:
def f(a, L=None):
if L is None:
L = []
...
Which binds L to a new list every time the function is called (if L is not
presupplied).
The "None" is not particularly special; like the number 10 it is immutable, so
defining it the once at function definition time is not an issue. It is simply
an immutable sentinel value representing "not a normal valid value", and the
common choice in Python.
Cheers,
Cameron Simpson <c...@zip.com.au>
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor