On Thursday 02 June 2016 14:21, Igor Korot wrote: > Hi, guys, > > On Wed, Jun 1, 2016 at 9:42 PM, boB Stepp <robertvst...@gmail.com> wrote: >> On Wed, Jun 1, 2016 at 7:55 PM, Marcin Rak <m...@sightlineinnovation.com> >> wrote: >>> Hi to all >>> >>> I have a beginner question to which I have not found an answer I was able >>> to understand. Could someone explain why the following program: >>> >>> def f(a, L=[]): >>> L.append(a) >>> return L >>> >>> print(f(1)) >>> print(f(2)) >>> print(f(3)) >>> >>> gives us the following result: >>> >>> [1] >>> [1,2] >>> [1,2,3] >>> >>> How can this be, if we never catch the returned L when we call it, and we >>> never pass it on back to f??? > > I think the OP question here is: > > Why it is printing the array?
Because he calls the function, then prints the return result. print(f(1)) calls f(1), which returns [1], then prints [1]. Then he calls: print(f(2)) which returns [1, 2] (but he expects [2]), then prints it. And so on. > There is no line like: > > t = f(1) > print t Correct. But there are lines: print(f(1)) print(f(2)) print(f(3)) -- Steve -- https://mail.python.org/mailman/listinfo/python-list