why cannot assign to function call

Rhodri James rhodri at wildebst.demon.co.uk
Fri Feb 27 19:08:30 EST 2009


On Fri, 27 Feb 2009 23:55:43 -0000, Ethan Furman <ethan at stoneleaf.us>  
wrote:

I'm not Mark, but you did post to the whole group!

[snippety snip]

> Specifically, how is a new name (pbr) different, in Python, from a new  
> name initialized as if by assignment (pbv)?  It seems to me than you end  
> up with the same thing in either case (in Python, at least), making the  
> distinction non-existent.
>
> def func(bar):
>      bar.pop()
>
> Pass-by-reference:
>    foo = ['Ethan','Furman']
>    func(foo)			# bar = foo
>
> Pass-by-value:
>    foo = ['Python','Rocks!']
>    func(foo)			# bar is new name for foo

With true pass-by-value, this comment is not true.  Bar would be a copy
of foo, not a new name.  What happens to bar is then not reflected in
foo (depending on how deep the copy is), which is the objective of
pass-by-value.

-- 
Rhodri James *-* Wildebeeste Herder to the Masses



More information about the Python-list mailing list