Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #64446
| From | emile <emile@fenx.com> |
|---|---|
| Subject | Re: Modifying the default argument of function |
| Date | 2014-01-21 11:20 -0800 |
| References | <52dec646$0$2934$426a74cc@news.free.fr> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.5814.1390332031.18130.python-list@python.org> (permalink) |
Function defs with mutable arguments hold a reference to the mutable container such that all invocations access the same changeable container. To get separate mutable default arguments, use: def f(x=None): if x is None: x=[2,3] Emile On 01/21/2014 11:11 AM, Mû wrote: > Hi everybody, > > A friend of mine asked me a question about the following code: > > [code] > def f(x=[2,3]): > x.append(1) > return x > > print(f()) > print(f()) > print(f()) > [/code] > > The results are [2, 3, 1], [2, 3, 1, 1] and [2, 3, 1, 1, 1]. > > The function acts as if there were a global variable x, but the call of > x results in an error (undefined variable). I don't understand why the > successive calls of f() don't return the same value: indeed, I thought > that [2,3] was the default argument of the function f, thus I expected > the three calls of f() to be exactly equivalent. > > I'm don't know much about python, does anybody have a simple explanation > please? >
Back to comp.lang.python | Previous | Next — Previous in thread | Find similar | Unroll thread
Modifying the default argument of function Mû <mu--@melix.net> - 2014-01-21 20:11 +0100
Re: Modifying the default argument of function Chris Angelico <rosuav@gmail.com> - 2014-01-22 06:19 +1100
Re: Modifying the default argument of function Mû <mu--@melix.net> - 2014-01-21 20:36 +0100
Re: Modifying the default argument of function Chris Angelico <rosuav@gmail.com> - 2014-01-22 06:46 +1100
Re: Modifying the default argument of function Asaf Las <roegltd@gmail.com> - 2014-01-21 16:30 -0800
Re: Modifying the default argument of function Steve Jones <steve@secretvolcanobase.org> - 2014-01-21 19:19 +0000
Re: Modifying the default argument of function emile <emile@fenx.com> - 2014-01-21 11:20 -0800
csiph-web