Dumb newbie back in shell

Chris Mellon arkanes at gmail.com
Tue Dec 11 09:36:54 EST 2007


On Dec 11, 2007 8:23 AM, J. Clifford Dyer <jcd at sdf.lonestar.org> wrote:
> The code you just posted doesn't compile successfully.
>

It *compiles* fine, but it'll raise an error when run.

> However, in your code, you probably have char_ptr defined at the module level, and you're confused because you didn't declare it as global.  Am I right?  My crystal ball has a smudge on it, but I think I can still see okay.
>

I assume that's what he think he's seeing also.

> You can still reference module level variables that aren't declared as global, but you can't assign to them.  Or rather, when you try to, you create a new local variable that shadows the global one.
>

No, the determination of what names are local and which are global
happens at compile time. The code as posted will not run correctly. It
could run if it weren't in a function and were executed in global
scope.

What's probably happening is that line_ptr < last_line is not true and
the body of the function isn't executed at all. The unbound local
exception is a runtime error that occurs when the local is accessed,
not when the function is compiled.



More information about the Python-list mailing list