Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder1.news.weretis.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.85.MISMATCH!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.009 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'explicitly': 0.04; 'newbie': 0.05; 'interpreted': 0.07; 'python': 0.09; '22,': 0.09; 'looked': 0.10; 'big,': 0.16; 'closures': 0.16; 'confusion': 0.16; 'ideally,': 0.16; 'keyword.': 0.16; 'oct': 0.16; 'trap': 0.16; 'works"': 0.16; 'mon,': 0.16; 'wrote:': 0.17; 'odd': 0.17; 'variables': 0.17; 'variable': 0.20; 'sort': 0.21; 'either.': 0.22; "python's": 0.23; "i've": 0.23; 'header:In-Reply-To:1': 0.25; 'am,': 0.27; 'possibly': 0.27; 'message-id:@mail.gmail.com': 0.27; "doesn't": 0.28; 'chris': 0.28; 'declared': 0.29; 'code': 0.31; 'could': 0.32; 'limitations': 0.33; 'to:addr:python-list': 0.33; 'another': 0.33; 'received:google.com': 0.34; 'done': 0.34; 'received:209.85': 0.35; 'but': 0.36; 'received:209': 0.37; 'subject:: ': 0.38; 'there,': 0.38; 'to:addr:python.org': 0.39; 'subject:-': 0.40; 'header:Received:5': 0.40; 'most': 0.61; 'time,': 0.62; 'between': 0.63; 'more': 0.63; 'levels': 0.66; 'introduce': 0.80; '"just': 0.84; 'enforced': 0.84; 'fat': 0.84; 'locals': 0.84; 'to:name:python': 0.84; 'shadow': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=TITUoDR2FyETxhNAKVrJZgfZOc5dEsKItJ4LdrD+IMk=; b=viCv29o18G1NhtKeFmZeSVukBfcgy4eUzofdr3nSs8kXvXyCEFaB1fShNVAugdwNVf UvLFxjxpzkwMtmDAft22Ry/icOHoiuOFM/hUQXcTqZ6SCxMGBHApFl4F1BA/9+FmHqgz PsM+vbfsERe+cjvppuHo0CVeKgAKbOTnjGJj3wDyEHEpPkagoVpnFPuYyDMmx0++cSqs O5ZlE/ZDwhBHdlovArehAY8TZDkpuSpvsm2Vi3k2KlUFQuIVnSydnYU6RWyR8RFg535M 73ztP0uYLiyuGC8BWi6bK08RKf6w9zdUXNaRkHRwVx/EmNKMyZfrUIh0BvzinBWOnPdK d2YQ== MIME-Version: 1.0 In-Reply-To: References: <5081d0c3$0$30003$c3e8da3$5496439d@news.astraweb.com> <5083ad3e$0$29978$c3e8da3$5496439d@news.astraweb.com> <5083c7da$0$29978$c3e8da3$5496439d@news.astraweb.com> <508448c6$0$29978$c3e8da3$5496439d@news.astraweb.com> <5084e819$0$29897$c3e8da3$5496439d@news.astraweb.com> From: Ian Kelly Date: Mon, 22 Oct 2012 16:02:34 -0600 Subject: Re: A desperate lunge for on-topic-ness To: Python Content-Type: text/plain; charset=ISO-8859-1 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 17 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1350943387 news.xs4all.nl 6865 [2001:888:2000:d::a6]:58753 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:31906 On Mon, Oct 22, 2012 at 1:03 AM, Chris Angelico wrote: > Python's system "just works" most of > the time, but can introduce yet another trap for the unsuspecting > newbie who doesn't understand the difference between rebinding and > mutating; I've not looked into multiple levels of closures but I > suspect there'll be odd limitations there, as there's only one > "nonlocal" keyword. On my wishlist for Python is a big, fat SyntaxError for any variable that could be interpreted as either local or nonlocal and is not explicitly declared as either. It would eliminate this sort of confusion entirely and make code that shadows nonlocal variables much more readable. Ideally, the same thing would also be done for locals that shadow globals, but I don't see how that could possibly be enforced at compile time.