Grant Edwards <invalid@invalid.invalid>: >> Anyway, I would say Python definitely is in the classic pass-by-value >> camp. Here's a simple test: >> >> def f(x): >> x = 3 >> >> y = 1 >> f(y) >> print(y) >> >> If it prints 1, it's pass by value. If it prints 3, it's pass by >> reference. > > Somebody else might just as honestly say that it's pass by reference:
Yes, but that would be a shift from the 1970's notion: In pass-by-value, the actual parameter is evaluated. The value of the actual parameter is then stored in a new location allocated for the function parameter. [...] In pass-by-reference, the actual parameter must have an L-value. The L-value of the actual parameter is then bound to the formal parameter. [...] * A parameter in Pascal is normally passed by value. It is passed by reference, however, if the keyword var appears before the declaration of the formal parameter. procedure proc(in: Integer; var out: Real); * The only parameter-passing method in C is call-by-value; however, the effect of call-by-reference can be achieved using pointers. In C++ true call-by-reference is available using reference parameters. <URL: http://www.cl.cam.ac.uk/teaching/0910/ConceptsPL/Algol-Pasca l.pdf> Pass by reference could easily be added to Python, too, if that were deemed useful. Marko -- https://mail.python.org/mailman/listinfo/python-list