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

Reply via email to