On Wednesday, June 19, 2013 2:17:35 PM UTC-5, Ahmed Abdulshafy wrote: > I'm reading the Python.org tutorial right now, and I found > this part rather strange and incomprehensible to me> > > Important warning: The default value is evaluated only > once. This makes a difference when the default is a > mutable object such as a list, dictionary, or instances of > most classes > > def f(a, L=[]): > L.append(a) > return L > > print(f(1)) > print(f(2)) > print(f(3)) > > This will print > > [1] > [1, 2] > [1, 2, 3] > > How the list is retained between successive calls? And > why?
By the evil hands of an illogical consistency. Have you ever heard the old adage: "The road to hell is paved in good intentions"? Well, apparently the original designers of the language called in sick the day that class was taught. It's unfortunate because the same functionality that this "intention" claims to solve can be reproduced easily, and in a less astonishing manner, by the programmer himself. http://en.wikipedia.org/wiki/Principle_of_least_astonishment -- http://mail.python.org/mailman/listinfo/python-list