hh54188
hh54188

Reputation: 15626

Python Error: local variable referenced before assignment

Here is my code:

import time

GLO = time.time()

def Test():
    print GLO
    temp = time.time();
    print temp
    GLO = temp

Test()

Traceback (most recent call last): File "test.py", line 11, in Test() File "test.py", line 6, in Test print GLO UnboundLocalError: local variable 'GLO' referenced before assignment

the error occurred when I add the GLO = temp, if I comment it, the function could be execute successfully, why?

How can I set GLO = temp?

Upvotes: 2

Views: 34935

Answers (2)

zhangyangyu
zhangyangyu

Reputation: 8610

Python looks the whole function scope first. So your GLO refers to the one below, not the global one. And refer the LEGB rule.

GLO = time.time()

def Test(glo):
    print glo
    temp = time.time();
    print temp
    return temp

GLO = Test(GLO)

or

GLO = time.time()

def Test():
    global GLO
    print GLO
    temp = time.time();
    print temp
    GLO =  temp

Test()

Upvotes: 4

Prahalad Deshpande
Prahalad Deshpande

Reputation: 4767

Within the Test method specify that you want to refer to the globally declared GLO variable as shown below

def Test():
    global GLO #tell python that you are refering to the global variable GLO declared earlier.
    print GLO
    temp = time.time();
    print temp
    GLO = temp

A similar question can be found here : Using a global variable within a method

Upvotes: 5

Related Questions