a wierd parameter passing behavior
POYEN OP Olivier (DCL)
Olivier.POYEN at clf-dexia.com
Wed Jun 4 09:59:49 EDT 2003
More information about the Python-list mailing list
Wed Jun 4 09:59:49 EDT 2003
- Previous message (by thread): a wierd parameter passing behavior
- Next message (by thread): a wierd parameter passing behavior
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> -----Message d'origine----- > De : Torvo Sollazzo [mailto:mpradella at yahoo.it] > Envoyé : mercredi 4 juin 2003 15:30 > À : python-list at python.org > Objet : a wierd parameter passing behavior > > > Hi! > > I found a strange parameter passing behavior in Python (v. 2.2.2). > Look at this piece of code: One mutates l in place, while the other affect a new local variable : > def p(l) : > l += [3] > l[0] = 2 > Here, you change a mutable object in place (ensured byt the += stuff) > def p1(l) : > l = l + [3] > l[0] = 2 > Here you create a local variable l, assigning the value l+[3] to it. Then you change this local variable first element. But outside the scope of the p1 function, this "new" l does not exists, ence l is still [1] On the contrary, since list are mutable objects in python, if you change list *in place* with l.__iadd__(stuff) (or l += stuff), it change l without creating a new one, a local one. > def f() : > l = [1] > p(l) > print l > l = [1] > p1(l) > print l > > If I call f(), I obtain the following results: > [2,3] > [1] > Why p1() is different from p()? The list l should be passed by > reference in both cases, while it seems that "l = l + [3]" creates a > new local variable, also called l. > -------------- next part -------------- ----------------------------------------------------------------- Ce message est confidentiel ; son contenu ne represente en aucun cas un engagement de la part de Dexia Credit Local ou de Dexia CLF Banque. Toute publication, utilisation ou diffusion, meme partielle, doit etre autorisee prealablement par l'emetteur. Si vous n'etes pas destinataire de ce message, merci d'en avertir immediatement l'expediteur. This message is confidential ; its contents do not constitute a commitment by Dexia Credit Local or Dexia CLF Banque. Any unauthorised disclosure, use or dissemination, either whole or partial, is prohibited. If you are not the intended recipient of the message, please notify the sender immediately. ----------------------------------------------------------------- Consultez notre site internet www.dexia-clf.fr La cle d'une gestion optimisee du secteur public local -----------------------------------------------------------------
- Previous message (by thread): a wierd parameter passing behavior
- Next message (by thread): a wierd parameter passing behavior
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list