Prev: bypass UAC control through python script (to be run from batchfile)
Next: unable to run wxPython script: dll errors
From: Gary Herron on 11 Mar 2010 11:48 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 > |