Changing global variables in embedding Python
Alex Martelli
aleax at aleax.it
Fri Sep 27 02:56:29 EDT 2002
John Dunn wrote:
> Hello-
>
> I have embedding Python in a C++ application. All is well, except I
> cannot figure out how to modify globals via Python script. After I
You talk of code inside a function, althought the snippet you show
doesn't look like it is:
> the following code, the first line works properly, but the second will
> fail with the error 'local variable 'test' referenced before
> assignment'. The message object is an argument to the function.
>
> message.print( test )
> test = "test2"
If a function assigns to name 'test', and does NOT have a statement
global test
(preferably at the start), then 'test' names a LOCAL variable of
the function, not a global one. But this would make it quite
astonishing that the first line would work -- THAT line should
give the error message you're reporting for the SECOND one...
indeed the error message you report is IMPOSSIBLE for the second
line you give -- it's not referencing 'test', it's binding it.
So I suspect you mis-observed things, and the error msg is
actually for the first of these two lines. As a fix, try to
start your function with the statement:
global test
Alex
More information about the Python-list
mailing list