var or inout parm?

Steve Holden steve at holdenweb.com
Fri Dec 12 08:31:25 EST 2008


sturlamolden wrote:
> On Dec 12, 1:56 pm, sturlamolden <sturlamol... at yahoo.no> wrote:
> 
>> That is because integers are immutable. When x += 1 is done on an int,
>> there will be a rebinding. But try the same on say, a numpy array, and
>> the result will be different:
> 
> 
> And a consequence of this is, if you have a function like
> 
> def foobar(x):
>    x += 1
> 
> then the parameter x will be modified given that x have mutable type.
> 
> However, if we have a function like
> 
> def foobar(x):
>    x = x + 1
> 
> then x will not be modified, mutable or not.
> 
> (Well, you could abuse operator overlaoding to make unexpected side
> effects in the latter case. But except for such insanity it will not
> have side-effects.)
> 
This was all thrashed out exhaustively in the still-feared call
semantics thread. Yes, augmented operations work differently on mutable
and immutable objects. Nothing to see here, move right along ...

regards
 Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/




More information about the Python-list mailing list