On Tue, 26 Sep 2017 03:26 am, Antoon Pardon wrote: >>> I'm not sure that Steve knows how it works. When he denies that the >>> assignment is an alias operation in Python that casts an important doubt. >> >> I can assure you that Steve knows how it works. Again, the disagreement is >> almost certainly over the semantics of the word "alias." > > Sorry, what he wrote contradicts that. Maybe he was just really confused > at that moment, but it still needed correction. If the assignment is > an alias operator then after the statements > > a = 1 > b = a > b = 2 > > a is not 2.
How do you get that conclusion? I think you are mistaken. If assignment were an alias operation, then a would be 2, because b is an alias to a. That's how var parameters in Pascal work, and out parameters in Ada, and both are described as aliasing. Its also how reference variables ("aliases") in C++ work. https://www.tutorialspoint.com/cplusplus/cpp_references.htm https://stackoverflow.com/a/17025902 Here's some C++ code that demonstrates it. Apologies in advance if it isn't the most idiomatic C++ code. #include <iostream> #include<stdio.h> using namespace std; int main () { int a; int& b = a; // reference variable or alias a = 1; printf("a: %d, alias b: %d\n", a, b); b = 2; printf("a: %d, alias b: %d\n", a, b); return 0; } And here is the output: a: 1, alias b: 1 a: 2, alias b: 2 So I stand by what I said: assignment in Python is NOT an alias operation. If it were an alias operation, as you claim, then we could write this: a = 1 b = a # alias to a b = 2 # assigning to be is like assigning to a (as in the C++ example) assert a == 2 But Python is not like that, assignment is not an alias operation, and the assert will fail. -- Steve “Cheer up,” they said, “things could be worse.” So I cheered up, and sure enough, things got worse. -- https://mail.python.org/mailman/listinfo/python-list