Hrvoje Niksic a écrit : > Bruno Desthuilliers <[EMAIL PROTECTED]> > writes: > >> The problem is that your formulation implies (to me at least) that the >> variable is actually a kind of container for the object. > > I really didn't expect it to be read that way, especially since the > sentence claims that the same instance can reside in several > variables. If the term variable implied containment, that would not > be possible because different variables would imply different objects. > > To be fair, the OP probably *did* confuse variables with containment, > and I rot13'ed my hack to avoid unnecessarily prolonging that > confusion. However, I don't think his confusion is a consequence of > inaccurate terminology, but of an inaccurate mental model of Python > objects.
I'd think it has more to do with an inaccurate mental model of Python's variables - hence my (perhaps useless) corrections. > When the mental model is correct, the term "variable" works > as well as any other; when it's incorrect, using different words for > the same thing is of little help. This is where our POV differ. IMHO, wording and mental model have a strong relationship - IOW, incorrect wording leads to incorrect representation. >>>> Python's "variables" are name=>object bindings. >>> No reason to use quotes. >> Yes, there's one : to mark the difference between Python-like >> name=>object bindings and C-like labels-on-memory-address variables >> the latter model being the most commonly known to beginners. > > Are you sure about the last part? Ok, I would not bet my hand on it !-) But the (non appliable) "pass by value"/"pass by reference" question is still asked often enough here to be an indication. > It seems to me that in recent times > more Python beginners come from a Java background than from a C one. Java does have "container" variables for primitive types, and even for "references", Java's variables are more than names - they do hold type informations too. Now I don't pretend to know how this is really implemented, but AFAICT, and at least from a cognitive POV, Java's variables model looks very close to the C/C++ model. FWIW, I came to Python with a VB/C/Java/Pascal background, and Python was the first language for which I needed to revise my mental model of the "variable" concept. > In any case, "variable" is a sufficiently general concept not to be > tied to a specific implementation. I'd say it's like the "type" concept : it's a general concept, but it's not totally implementation-independant. "Type" doesn't mean exactly the same thing in static or dynamic languages... > That the concept of variable > differs among programming languages is for me not reason enough to > eschew it. I didn't mean to imply "variable" was an inappropriate term - just that it may have a somewhat different meaning wrt/ some others more mainstream languages. My humble experience is that rewording the whole concept in terms of name=>object bindings did sometime help in the past. -- http://mail.python.org/mailman/listinfo/python-list