IsString

Ben Sizer kylotan at gmail.com
Wed Dec 14 04:39:08 EST 2005


Steven D'Aprano wrote:
> def modify_in_place(obj):
>     """Modify an arbitrary object in place."""
>     obj = None
>
> x = [1, 2, 3] # mutable object
> modify_in_place(x)
> assert x is None
>
>
> Doesn't work either.

To be fair, this isn't because the function is not pass by reference,
but because the assignment operator reassigns the reference rather than
altering the referent, and thus modify_in_place doesn't actually
contain any modifying operations. With a good understanding of what
Python's assignment operator actually does, (I believe) you can view
Python as pass-by-reference without any semantic problems.

-- 
Ben Sizer




More information about the Python-list mailing list