Mutability of function arguments?

bonono at gmail.com bonono at gmail.com
Wed Dec 7 21:57:27 EST 2005


Mike Meyer wrote:
> "ex_ottoyuhr" <ex_ottoyuhr at hotmail.com> writes:
> > I'm trying to create a function that can take arguments, say, foo and
> > bar, and modify the original copies of foo and bar as well as its local
> > versions -- the equivalent of C++ funct(&foo, &bar).
>
> C++'s '&' causes an argument to be passed by reference. Python does
> that with all arguments. Any changes you make to the argument in the
> function will be seen in the caller unless you explicitly make a copy
> to pass.
>
except when foo and bar are bound to immutable objects.

In C:

int foo=1;
int bar=2;

void update(int *a, int *b) { *a=3; *b=4}

update(&foo, &bar);

In Python:

foo=1
bar=2

def update(a,b): a=3; b=4

update(foo,bar)

Many people from C/C++ background would be tricked for this situation.




More information about the Python-list mailing list