On 06/29/2013 12:51 PM, Steven D'Aprano wrote: > You are absolutely correct in principle. But in practice, there are ten > bazillion C, Pascal, COBOL, and BASIC programmers who understand the word > "variable" to mean a named memory location, for every Smalltalk or Lisp > programmer who understands a "variable" as a name binding. So it's pure > weight of numbers thing. > > The average Lisp programmer will be completely aware that "variable" can > mean various things, and take care to determine what the word means in > Python. She will immediately grok what we mean, even if she thinks that > the "no variables" part is just an affectation ("Heh, those wacky Python > dudes think they don't have variables!") but at least she'll understand > the name binding part. > > On the other hand, the average C programmer is barely aware that there > are other languages at all, let alone that some of them differ from C in > semantics as well as syntax. So by emphasising the differences ("Python > has no variables? It has name bindings?") we increase the likelihood that > he'll learn the differences in semantics as well as syntax. > > So, in a very practical sense, "Python has no variables, it has name > bindings" is completely wrong except in the sense that really matters: > Python's variables don't behave identically to C variables.
Very good points. Thank you. Good tips for how to better explain things next time it comes up. I'll avoid simply saying "Python has no variables." -- http://mail.python.org/mailman/listinfo/python-list