[Tutor] scoping oddity

Karl Pflästerer sigurd at 12move.de
Sat May 7 16:25:15 CEST 2005


On  7 Mai 2005, Michael.Coll-Barth at VerizonWireless.com wrote:

> I came across a rather odd issue with scoping.  Can someone explain why
> testa and testc works, but not testb.  I am running under python 2.4.1 on
[...]
> x = 5
>
> def testa(astr):
>      print astr, x
>
> testa(22)
>
> def testb(astr):
>      x = x - 1
>      print astr, x
>
> testb(22)
>
> def testc(astr):
>      print astr, x-1
>
> testc(22)

In testb you make an assignment to `x'.  So `x' is no longer the global
`x' but a local `x'.  But since is has no local value before the
assignment you get an error.  You could tell Python to use the global
value of `x'.

def testb(astr):
     global x
     x = x - 1
     print astr, x



   Karl
-- 
Please do *not* send copies of replies to me.
I read the list


More information about the Tutor mailing list