3

I must be missing some very basic concept about Python's variable's scopes, but I couldn't figure out what.

I'm writing a simple script in which I would like to access a variable that is declared outside the scope of the function :

counter = 0

def howManyTimesAmICalled():
    counter += 1
    print(counter)

howManyTimesAmICalled()

Unexpectedly for me, when running I get :

UnboundLocalError: local variable 'counter' referenced before assignment

Adding a global declaration at the first line

global counter
def howManyTimesAmICalled():
    counter += 1
    print(counter)

howManyTimesAmICalled() 

did not change the error message.

What am I doing wrong? What is the right way to do it?

Thanks!

2
  • Did you add global counter in the first line of the howManyTimeAmICalled function ? Commented Jul 29, 2013 at 16:07
  • @karthikr - I have edited my question to make it clear. Sukrit Kalra 's answer clarifies that indeed it is in the wrong place. Commented Jul 29, 2013 at 16:10

1 Answer 1

8

You need to add global counter inside the function definition. (Not in the first line of your code)

Your code should be

counter = 0

def howManyTimesAmICalled():
    global counter
    counter += 1
    print(counter)

howManyTimesAmICalled()
Sign up to request clarification or add additional context in comments.

1 Comment

fyi: that signals to use the counter from the global registry rather than the local one

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.