On Thu, 08 May 2014 10:35:46 +1000, Ben Finney wrote: > Marko Rauhamaa <ma...@pacujo.net> writes: > >> Ben Finney <b...@benfinney.id.au>: >> >> > That's why I always try to say “Python doesn't have variables the way >> > you might know from many other languages”, >> >> Please elaborate. To me, Python variables are like variables in all >> programming languages I know. > > Many established and still-popular languages have the following > behaviour:: > > # pseudocode > foo = [1, 2, 3] > bar = foo # bar gets the value [1, 2, 3] > assert foo == bar # succeeds > foo[1] = "spam" # foo is now == [1, "spam", 3] > assert foo == bar # FAILS, ‘bar’ == [1, 2, 3]
Pascal and Fortran are examples of this. Any more recent examples? Any examples of languages with dynamic typing but this behaviour? I note also that one may still have a name-binding model with copy-on- assign semantics. For example, one might add syntactic sugar to a Python- like language such that: spam = eggs is a name binding, and spam := eggs makes a copy of eggs before binding. -- Steven D'Aprano http://import-that.dreamwidth.org/ -- https://mail.python.org/mailman/listinfo/python-list