This is addressed in the FAQ.

http://www.python.org/doc/faq/general/#why-are-default-values-shared-between-objects

jitendra gupta wrote:

def foo(x = [0]):
x[0] = x[0] + 1
return x[0]

def soo(x = None):
if x is None:
x = [0]
x[0] = x[0] + 1
return x[0]

>>> foo()
1
>>>foo() #See the behavior incremented by one 2 >>>foo([1]) # but here based on given number 2 >>>foo() 3
>>>foo([1])
2
>>>foo()
4

>>>soo()
1
>>>soo()
1
>>>soo([1])
2
>>>soo()
1

Why foo() is incremented by 1 always when we are not passing any argument,
but this is not happening in soo() case, In which scenario we will use these type of function.'

Thanks Jitendra Kumar


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to