On Fri, 11 Jul 2008 20:13:04 -0700, happy wrote: > Can a variable be considered the simplest of the data structures. I am > tutoring some kids about basics of programming using python. Not an > expert in computer sciences, but am a python enthusiast.
Why do you need this additional layer of indirection? Just explain the real simple data structures à la "look, kids, a string is a chain of characters which are bytes actually. <insert explanation about encodings etc. here>". Although explaining encodings is an *important* thing (which many programmers still get wrong), it might be second priority to kids and you might just want to say "a string is text" and jump into higher- order data structures. > I wanted to know if it is correct to say a variable is a data structure, > it has a name and a value. Not at all. This sounds a lot like an explanation for variables in other languages (such as C, where the value also has a type). In Python, we use to speak of "names," not variables. They are more like name tags you can put on objects -- or you don't. Depending on the age/interest of your students, I'd insert an explanation about references, reference counting and garbage collection here (they usually find that quite understandable and it paves the way for The Real Stuff, even though you might argue that the refcounting gc is a CPython detail and might become obsolete with PyPy's rise <wink>). The important thing is really that Python's approach of references is nearly orthogonal to the common approach of variables. In other languages, variables are (as you described above) containers (a bucket, really!) in your memory where you can put stuff into. Assignment is usually a copy or pointer operation. Python does not care at all about your memory. You have abstract objects (incidentally saved in your memory, okay) with names being one mechanism to reference them. Here, assignment is always a "put the left-hand side name tag onto the right-hand side object". > Put a stack of variables in a special data > structure called a dictionary where the each name associates to a value. > If in a data structure, one uses numbers starting from 0 to describe the > name, it becomes a list and so forth.... First off, you really put objects in your data structures. Names are a one-way mapping -- the object does not know which name tags are assigned to it. Your explanation of dictionaries and lists sounds a little bit upside- down (not the mapping name->value or number->value makes it a dict or list -- the data structure makes it a mapping with this and that behaviour). HTH, -- Robert "Stargaming" Lehmann -- http://mail.python.org/mailman/listinfo/python-list