Dumb newbie back in shell

MartinRinehart at gmail.com MartinRinehart at gmail.com
Tue Dec 11 08:18:00 EST 2007


I'm less confused. If someone can explain the wisdom of this design,
I'd be grateful.

If someone can explain why the following compiles successfully, I'd be
even more grateful:

def get_toks( text ):
    global line_ptr, last_line
    while line_ptr < last_line:
        while char_ptr < len(text[line_ptr]):
            if matches_EOI():
                tokens.append( Token(EOI) )
            elif matches_EOL():
                tokens.append( Token(EOL) )
                line_ptr += 1
                char_ptr = 0

Shouldn't "char_ptr" be flagged as an error, appearing in line 4
before being a lhs in the last line?

Martin

MartinRineh... at gmail.com wrote:
> Peter,
>
> question is, why did the first one work? In my real code I've got
> module-level vars and an error msg trying to use them in a function.
> In my test example I've got them accessed from within a function w/o
> error message.
>
> I am confused.
>
> Martin
>
> Peter Otten wrote:
> > MartinRinehart wrote:
> >
> > > However, here's the little tester I wrote:
> > >
> > > # t.py - testing
> > >
> > > global g
> > > g = 'global var, here'
> > >
> > > def f():
> > >     print g
> > >
> > > f()
> > >
> > > It prints 'global var, here,' not an error message. Wassup?
> >
> > Try it again with a modified f():
> >
> > def f():
> >     print g
> >     g = 42
> >
> > In Python variables that are assigned to in a function are
> > function-local by default.
> >
> > Peter



More information about the Python-list mailing list