[Guido] > ... > This particular form of breakage was a common error reported on c.l.py > and to help at python.org until we added UnboundLocalError to make the > diagnostic cleaner. It was indeed, and adding UnboundLocalError did cut the number of questions. > Maybe that's all that's needed; It's hard to know what could really help more. If Greg Wilson is still running newcomer experiments, I'd like to see what newcomers have to say about this: 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 " ? What I suspect, but don't know, is that a majority of newcomers who expect A to print 2 *also* expect B to print 3. That is, that they're thinking x is a global variable, and have no conception of local variables in mind. This is actually what happens in Icon, which also lacks declarations (in the same sense Python lacks them: it doesn't lack them <wink>). The difference is that all variables are global by default in Icon, and you need to explicitly say "local x" if you want a local var instead. That's error-prone for sure, by not quite as much so as Perl (where x is also global by default, but "local $x" sucks you into dynamic scoping; it does not in Icon).
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4