In a message of Tue, 07 Jun 2011 21:51:31 PDT, michel paul writes: >>> def f(n, history = []): > history.append(n) > return history
<snip> > >What's a good way to explain what's going on? > >- Michel Assuming that you have already taught about the difference between mutable and immutable objects, ask the student to make a different version, with the signature def f2(n, history=()) and see if that gives the expected result. Then get the student to _explain to you_ what's the difference between tuples and lists that could result in this difference in behaviour. This will move the discussion one of two ways. Either to "why using default values for mutable objects in function signatures is almost never what you want to do, and a discussion of what we can do about this (use sentinels)" :-) or "lists are a bad idea, use tuples for everything" :-(. If you are in conversation 2, you need to detour through 'then why do we have a list datatype? What is it good for?" Laura _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig