why cannot assign to function call

Joe Strout joe at strout.net
Fri Jan 9 05:22:17 CET 2009


rurpy at yahoo.com wrote:

> "the same as anyone else's" only if [Python's] "idea
> of assignment" does not include producing the same
> results.
> 
>   a = array (1,2,3)
>   b = a
>   a[1] = 4
>   print b
> 
> C, C++, VBA, Fortran, Perl:  1, 2, 3
> Python:  1, 4, 3

You are mistaken (except perhaps in the Fortran case, which is an 
oddball by modern standards, and I don't know Perl well enough to judge).

C/C++ code:

  int* a = malloc(3);
  a[0] = 1;
  a[1] = 2;
  a[2] = 3;
  int* b = a;
  a[1] = 4;
  print_array(b)
  ---> Result: 1, 4, 3

REALbasic code:

  Dim a() As Integer = Array(1,2,3)
  Dim b() As Integer = a
  a(1) = 4
  PrintArray b
  --> Result: 1, 4, 3

VB.NET code would be very similar in syntax, and identical in behavior, 
to the REALbasic code.  Java would also have the same semantics, though 
my Java is too rusty to get the syntax right without actually trying it.

If you can find a language where an array variable is NOT a reference 
(and thus does not behave exactly as in Python, Java, REALbasic, C++, 
etc.), then that language is either a dinosaur or some weird academic 
oddity.

Best,
- Joe





More information about the Python-list mailing list