What other languages use the same data model as Python?

sturlamolden sturla at molden.no
Wed May 4 10:44:38 EDT 2011


On May 3, 6:33 pm, Mel <mwil... at the-wire.com> wrote:

> def identify_call (a_list):
>   a_list[0] = "If you can see this, you don't have call-by-value"
>   a_list = ["If you can see this, you have call-by-reference"]


The first one is a mistake. If it were pass-by-value, it would
assign the string to a list unseen by the caller -- i.e. a copy
of the caller's argument (same value, different object).

But that does not happen. The string is assigned to the list
seen by the caller. Thus we can exclude call-by-value.

The second proposition is correct. This allows us to exclude
pass-by-reference similar to C++, Pascal and Fortran.

Thus:

def identify_call (a_list):
   a_list[0] = "If you cannot see this, you have call-by-value"
   a_list = ["If you can see this, you have call-by-reference"]


Clearly Python has neither call-by-value nor call-by-reference.

Python uses a third mechanism.

Sturla





More information about the Python-list mailing list