Dumb newbie back in shell
Bruno Desthuilliers
bruno.42.desthuilliers at wtf.websiteburo.oops.com
Mon Dec 10 12:08:55 EST 2007
MartinRinehart at gmail.com a écrit :
> OK, it's a scripting language.
For which definition of "scripting language" ?-)
>>>> def g():
> ... os.remove('tokeneizer.pyc')
> ... reload( tokeneizer )
> ... tokeneizer.tokenize('sample_decaf.d')
> ...
>
> But that gets me to:
>
> ... line 110, in get_toks
> UnboundLocalError: local variable 'line_ptr' referenced before
> assignment
>
> Here's a bit of the code, with line #s
>
> ...
> 68 global line_ptr
> 69 global char_ptr
> ...
> 75 line_ptr = 0
> 76 char_ptr = 0
> ...
> 109 def get_toks( text ):
> 110 while line_ptr < last_line:
> ...
> So when is a global var global?
Short answer : never !-)
Long answer:
First point: "global" really means "module level" - there's no
"application global" namespaces.
Second point: every name declared as the top-level is global - according
to the above definition. So there's no need to declare them as such. The
only place where you need the global statement is when you want to
rebind a module-level name from within a function. And it's in this
function that you need to declare the name as global.
FWIW, this is documented.
Last point: Python is not C, and it definitively doesn't have pointers.
Trying to write C in Python is a waste of time and an experiment in
frustration (just like trying to write language XXX in language YYY for
any distinct values of XXX and YYY).
HTH
More information about the Python-list
mailing list