>  >  I like the point made earlier that parameter passing at the function
>  >  gateway is all about assignment, and assignment is all about cloning a
>  >  pointer or reference, for use within the local scope, and these names
>  >  are by definition something tiny, whereas the objects themselves --
>  >  who knows how big these might be.
>  >
>  >  Kirby
>

Per my blog entry on this topic (mostly just pointing back here

http://mybizmo.blogspot.com/2008/05/memory-managment.html

), you might explicitly do the assignment x = y right in the
function header e.g. def g (x = y): is legal provide y has meaning
in the global scope by the time we reach this definition.

So to prove arguments "pass by assignment" you could go:

>>> class MegaLith:
        pass

>>> y = MegaLith()    # y gets to control one

>>> def f(x = y):
        x.color = "grey"  #  x does too, interimly...

Note you'd get an error if y weren't already defined.  The
more normal think is to have your right side defaults
be hard-coded values, not variables (names).
        
>>> f( )              # don't forget to actually do the work
>>> y.color
'grey'
>>> # tada!
>>>

The picture here would be x and y both tied to the same
MegaLith object, but x only while we're in the scope of
function f.

Kirby
_______________________________________________
Edu-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to