[Tutor] function remember calls?
Alan Gauld
alan.gauld at btinternet.com
Tue Aug 9 10:05:18 CEST 2011
On 09/08/11 08:44, Robert Johansson wrote:
> def rp_bounded_sum(n, i = 0, p = (0, 1), q = (1, 1), S = set([(0, 1),
> (1, 1)])):
> Strangely, (to me) it seems that the function remembers the set S
> between different calls:
That's correct. Python evaluates the default parameter value once at
function definition time so every call to the function uses the same
default object value. This often catches out newbies but should be
considered a 'feature of the language' rather than a bug - it's
existence enables some useful techniques which would not otherwise be
possible :-)
If you check the documentation on default parameters you will find more
details.
hth,
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list