UnboundLocalError: local variable 'colorIndex' referenced

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • silverburgh.meryl@gmail.com

    UnboundLocalError: local variable 'colorIndex' referenced

    Can you please tell me what is the meaning this error in general?

    UnboundLocalErr or: local variable 'colorIndex' referenced before
    assignment

    In my python script,
    I have a variable define and init to 0, like this
    colorIndex = 0

    and in one of my functions, I increment it by 1
    def myFunc
    colorIndex += 1

  • Rick Zantow

    #2
    Re: UnboundLocalErr or: local variable 'colorIndex' referenced

    silverburgh.mer yl@gmail.com wrote in news:1140987642 .195734.187540
    @t39g2000cwt.go oglegroups.com:
    [color=blue]
    > Can you please tell me what is the meaning this error in general?
    >
    > UnboundLocalErr or: local variable 'colorIndex' referenced before
    > assignment
    >
    > In my python script,
    > I have a variable define and init to 0, like this
    > colorIndex = 0
    >
    > and in one of my functions, I increment it by 1
    > def myFunc
    > colorIndex += 1
    >
    >[/color]

    It's a scoping issue. Within myFunc, if colorIndex receives a value
    (that is, if you assign something to it, as you do here), Python
    requires a local variable, one known within the scope of function. If
    you had only *read* the variable (x = colorIndex, for instance), then
    Python will first look for a local variable, and, finding none, will
    then look for a global variable, which it would find in this case. The
    net effect of all this is a common gotcha for new Python users: the
    'colorIndex' that is assigned to within myFunc is *not* the same as the
    one you assigned 0 to earlier; they just happen to share the same name.

    You can get around this in various ways. One is to declare the variable
    in myFunc, like this:
    def myFunc
    global colorIndex
    colorIndex += 1
    ...

    --
    rzed

    Comment

    • Diez B. Roggisch

      #3
      Re: UnboundLocalErr or: local variable 'colorIndex' referenced

      silverburgh.mer yl@gmail.com schrieb:[color=blue]
      > Can you please tell me what is the meaning this error in general?
      >
      > UnboundLocalErr or: local variable 'colorIndex' referenced before
      > assignment
      >
      > In my python script,
      > I have a variable define and init to 0, like this
      > colorIndex = 0
      >
      > and in one of my functions, I increment it by 1
      > def myFunc
      > colorIndex += 1[/color]

      It is alwasy a better idea to post whole scripts/working examples (even if working actaully means non-working). And this
      is an example why: Using your old code, things worked. But inside a function, colorIndex isn't in the scope. You could
      e.g. use a global-statement like this:


      colorIndex = 0

      def foo():
      global colorIndex
      colorIndex += 1

      foo()


      But that is not a very bright idea usually, as globals are difficult to debug.

      Diez

      Comment

      Working...