Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #50698

Re: Is this a bug?

Path csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail
Return-Path <joshua.landau.ws@gmail.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.003
X-Spam-Evidence '*H*': 0.99; '*S*': 0.00; 'python.': 0.02; 'attribute': 0.07; 'subject:bug': 0.07; 'function,': 0.09; 'cc:addr:python-list': 0.11; 'python': 0.11; 'def': 0.12; 'assume': 0.14; 'useful,': 0.14; 'changes': 0.15; 'assignment.': 0.16; 'assignments': 0.16; 'assigns': 0.16; 'behaviour.': 0.16; 'foo"': 0.16; 'jumping': 0.16; 'lhs': 0.16; 'saying.': 0.16; 'unhelpful': 0.16; 'weird': 0.16; 'sender:addr:gmail.com': 0.17; 'wrote:': 0.18; 'variable': 0.18; 'later': 0.20; 'saying': 0.22; 'cc:addr:python.org': 0.22; 'error': 0.23; 'refers': 0.24; 'fine': 0.24; 'cc:2**0': 0.24; 'header:In-Reply-To:1': 0.27; 'testing': 0.29; 'skip:- 40': 0.29; 'wondering': 0.29; 'external': 0.29; 'properties': 0.29; 'raise': 0.29; 'message-id:@mail.gmail.com': 0.30; "i'm": 0.30; 'code': 0.31; 'getting': 0.31; 'too.': 0.31; 'dramatic': 0.31; 'yes.': 0.31; 'class': 0.32; 'languages': 0.32; 'stuff': 0.32; 'supposed': 0.32; 'skip:- 30': 0.32; 'knows': 0.35; 'something': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'version': 0.36; 'consistent': 0.36; 'doing': 0.36; 'subject:?': 0.36; 'should': 0.36; 'so,': 0.37; 'too': 0.37; 'two': 0.37; 'being': 0.38; 'that,': 0.38; 'does': 0.39; 'sure': 0.39; 'changed': 0.39; 'skip:u 10': 0.60; 'no.': 0.61; "you're": 0.61; 'july': 0.63; 'refer': 0.63; 'different': 0.65; 'special': 0.74; 'subject:this': 0.83; 'conclusions': 0.84; 'local,': 0.84; 'responses': 0.93; '2013': 0.98
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type; bh=gmrGitjNrVLPGQREaCq+eicAVAAF4cPrYMhbmosNUaY=; b=ouc7F1VmQ9tNJAPDo0ExcvF5wNMgBEaLuWr9bKfHCBWtvjAci1T6GrdCuQhybV6YDo Pi1tBXkXudH3pK5XYrKVc8KzIfuwy1VadFyKOYAEDROhN2uk028WARrgWtoJegRdhYAU TFl7Q18a0x9QRtE9DgwLPhBItRYgscxGP29gI5wiR2n/v2rehzaNcOlkUNqq7UoUuuMb TOnCyUsokDJJ8bUBRBEdGRmBtfL1Kr/bSN6hgfxKKbixWCEIoy2jc1abB2kKGfQzed7P ykRxUXFDXHmygMBd6khzdfYkWXRw3ZUIPxWfEHUTNSbv/+QuSfIgSSrbB3HJ39KSHrUc x/Ow==
X-Received by 10.152.45.65 with SMTP id k1mr25087747lam.78.1373904832117; Mon, 15 Jul 2013 09:13:52 -0700 (PDT)
MIME-Version 1.0
Sender joshua.landau.ws@gmail.com
In-Reply-To <51E41A5C.7060903@nottheoilrig.com>
References <51E41A5C.7060903@nottheoilrig.com>
From Joshua Landau <joshua@landau.ws>
Date Mon, 15 Jul 2013 17:13:12 +0100
X-Google-Sender-Auth 31gfZd05GWwftA_sGM6zK_hfmDQ
Subject Re: Is this a bug?
To Jack Bates <tdhfwh@nottheoilrig.com>
Content-Type text/plain; charset=UTF-8
Cc python-list <python-list@python.org>
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.15
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.4738.1373904834.3114.python-list@python.org> (permalink)
Lines 58
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1373904834 news.xs4all.nl 15882 [2001:888:2000:d::a6]:45875
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:50698

Show key headers only | View raw


On 15 July 2013 16:50, Jack Bates <tdhfwh@nottheoilrig.com> wrote:
> Hello,
>
> Is the following code supposed to be an UnboundLocalError?
> Currently it assigns the value 'bar' to the attribute baz.foo
>
>    foo = 'bar'
>    class baz:
>       foo = foo

I have two responses because I'm not sure what you're saying. Take your pick.

----------------------------------

If you're getting an error from that, then yes. The code works fine for me.

I assume you're just jumping to conclusions and not testing code and
were doing something like:

foo = "Outside foo"
def this_will_break():
    foo
    foo = "Inside foo"

and wondering why it breaks. Is this correct?

If so, it's because Python has consistent ideas about whether
something is local to its scope -- some other languages will think
that foo is nonlocal *until* they see the assignment. Python knows
that foo will be assigned later in the function, so is a local
variable the whole time. Being local, the outside version refers to *a
different name*.

If you want them to refer to the same name, use "nonlocal" or
"global", depending on circumstance.

foo = "Outside foo"
def this_will_break():
    global foo
    foo
    foo = "Still outside foo (outside foo is changed too)"

----------------------------------------

ALTERNATIVELY

Are you saying you think that instead of doing what it does it should
raise an UnboundLocalError?

If so, then no. Assignments inside class bodies are special-cased in
Python. This is because all assignments refer to properties of "self"
on the LHS but external things too on the RHS. This is why you can do
"def x(): ..." instead of "def self.x(): ..." or some other weird
thing. There's also some extra special stuff that goes on.

In order to make this an UnboundLocalError, lots of dramatic and
unhelpful changes would have to take place, hence the current
behaviour. The current behaviour is useful, too.

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Re: Is this a bug? Joshua Landau <joshua@landau.ws> - 2013-07-15 17:13 +0100

csiph-web