[Python-Dev] LOAD_NAME & classes (original) (raw)

Tim Peters tim.one@comcast.net
Thu, 25 Apr 2002 01:08:49 -0400


[Guido, on

x = 2 def f(): print x # A x = 3

f() print x # B

A: What do you think should happen when the print at A executes? B: " " " " " " " " " " B " ? ]

That's not a fair experiment until after you've given them a good concept of local and global variables without name conflicts.

I think my point is getting lost twice:

  1. My suspicion is that the majority of people I've explained this to, over the years and years, would have answered the equivalent to "well, B should print 3, of course!", when translated to the specific context in which their confusion arose. That is, I suspect they didn't understand local variables at all, not they that had some vision of "well, it's the global name unless and until I dynamically override it with a local name, at which point the global name with the same spelling is no longer relevant".

  2. If we're talking about people willing to be taught "a good concept of local and global variables" before going postal, there's no "problem" to be solved here! I suspect even Mr. Kuchling understands how local variables work today .

... But on the other hand, it's easy to show that after ... which can then be used to explain that variable assignments create local variables. You don't need to explain the reason for this feature at this point .. Next you can explain the global statement ... After that you can show how name conflicts are handled ... At some point you should also point out that ... THEN you are ready for the experiment Tim proposes above.

Anyone willing to sit through that much explanation will have no problem understanding how locals work today. Besides, if you get to tell them beforehand that "variable assigments create local variables" dynamically, then I get to tell them beforehand that variable assignments don't create local variables dynamically. At that point we'd only be testing how faithfully they can regurgitate what they've just been told.

I'm not a sure a difference between 12% comprehension rate and 13% comprehension rate is statistically significant anyway <0.9 wink>.