Joe Strout <[EMAIL PROTECTED]> writes: > There are only the two cases, which Greg quite succinctly and > accurately described above. One is by value, the other is by > reference. Python quite clearly uses by value.
You make a grave error in asserting that there are only two cases. Algol, for instance, used call-by-name, which is neither call-by-value or call-by-reference. There are a number of other evaluation strategies. For a primer on the subject see the following Wikipedia page: http://en.wikipedia.org/wiki/Evaluation_strategy CLU used the termed "call-by-sharing" for the evaluation strategy shared by Python, Lisp, CLU, Java, Ruby, and JavaScript, etc. It should be noted that the Wikipedia page does not document "call-by-sharing", in specific and refers to Python's strategy as a type of call-by-value. It also notes that call-by-value is not a single evaluation strategy, but rather a family of evaluation strategies, and that the version of the strategy used by Java (and hence Python) shares features with call-by-reference strategies. Consequently, many people prefer to use a different name from "call-by-value" for Python/Java/Lisp's strategy in order to avoid confusion. In any case, no one can disagree with the fact that the evaluation strategy used by Python et. al., differs significantly from the call-by-value evaluation strategy used by C and the like, whatever you wish to call it. |>oug -- http://mail.python.org/mailman/listinfo/python-list