loop scope

David MacQuigg dmq at gain.com
Sat Mar 20 03:55:48 CET 2004


On 19 Mar 2004 12:52:08 -0800, danb_83 at yahoo.com (Dan Bishop) wrote:

>Josiah Carlson <jcarlson at nospam.uci.edu> wrote in message news:<c3d4r8$gho$2 at news.service.uci.edu>...
>> > One way to avoid this problem is to have an explicit scope-creating
>> > construct instead.
>> > 
>> > def foo(a):
>> >    scope outer:
>> >       a = 3
>> >       scope inner:
>> >          a = 4
>> >          print a            # prints 4
>> >          print outer.a      # prints 3
>> >          print foo.a        # prints the function parameter
>> >       print a               # inner.a is out of scope, so prints 3
>> >       foo.b = 5             # Creates a new function-scope variable.
>> >    print b                  # prints 5
>> 
>> Ick.  Thank god Python doesn't seem to be heading in this direction.
>
>I agree.  Just because this was my idea doesn't mean I have to like it ;-)
>
>I'm satified with the scope rules the way they are, except for list comprehensions.

There is one small change I would make.  Nested scopes should apply to
*any* nested code, including nested classes.  This would make the
rules much simpler and easy to teach.

-- Dave




More information about the Python-list mailing list