Aaron Brady <castiro...@gmail.com> wrote: > On Jan 13, 5:06 pm, Mark Wooding <m...@distorted.org.uk> wrote: > snip > > I'm going to move away from the formal semantics stuff and try a > > different tack. Here's what I think is the defining property of > > pass-by-value (distilled from the formal approach I described earlier, > > but shorn of the symbolism): > > > > The callee's parameters are /new variables/, initialized /as if by > > assignment/ from the values of caller's argument expressions. > > In other words, the same as assignment in that language.
It's the same as assignment of /values/ to /fresh variables/. It's important to specify that argument expressions are fully evaluated, and that nothing gets overwritten in the process. So the difference between Python and C is that C copies values during assignment, but Python doesn't. Therefore the argument passing works the same way. > > Because its argument passing works the same way as its assignment. > > That would be called pass-by-assignment. But you've just postponed > explaining yourself. Stop delegating and work. Huh? I'm really at a loss to know what you want me to do. I can't help it if people are confused over the phrase `pass-by-value', beyond trying to explain what it means using clear definitions. The `value' part means that argument expressions are /evaluated/ (turned into values), which forces applicative-order semantics rather than (say) normal-order. -- [mdw] -- http://mail.python.org/mailman/listinfo/python-list