Behavior of default parameter in a function

jitendra gupta jitu.icfai at gmail.com
Thu Mar 11 04:32:18 EST 2010


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100311/686739e9/attachment.html>


More information about the Python-list mailing list