Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Behavior of default parameter in a function

0 views
Skip to first unread message

Gary Herron

unread,
Mar 11, 2010, 11:48:20 AM3/11/10
to pytho...@python.org
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
>

0 new messages