Technically of course Python doesn't have assignment, it just binds names.
Albert raised the subject of Algol 68 which if I remember correctly used :=
for assignment and = to bind names (although unlike Python you couldn't
then re-bind the name to another object in the same scope).
Algol 68 is very particular about this indeed.
For instance they have a whole theory behind
real x;
x := 17.;
This is considered an abbreviation of
ref real x = loc real;
x:= 17;
So x is a reference bound to a freshly generated local real.
You see = and that means you can't ever break that relationship.
On the left side of a := it is required to have a ref something.
Because that generates a pretty clear context, you have considerable
leeway on the right side, that is cast into the something.
real x= 18.;
x := 15.;
is right out.
If you want to rebind something you need a ref which is really
a ref ref. Then you can only switch bindings between different
types. So it is totally different from Python.
I never thought about = in python to mean binding to set it
apart from the Pascal := , instead of being a c-ism.
Still my mathematical mind is bothered about the sequence
( legal in FORTRAN , C Python )
X = 1 <separator>
X = 2
Groetjes Albert
Groetjes Albert