Python:无法在函数中增加计数器变量

时间:2014-07-14 14:17:00

标签: python pyglet

每次按下鼠标,我都需要增加一个计数器变量count。我不想使用全局变量,因此我得到以下错误:

如果我在global name 'count' is not defined函数中使用global count行,我会得到on_mouse_press

如果我不使用global行,则会收到错误UnboundLocalError: local variable 'count' referenced before assignment

代码如下:

import pyglet
from pyglet import clock
import time
from pyglet.gl import *
from pyglet.window import mouse, key, Window

def dispatch_mouse_events(mywindow, count, dataclick, datatime):
    @mywindow.event
    def on_mouse_press(x, y, button, modifiers):
        #global count
        timeNow = time.clock()

        if button == mouse.LEFT:
            dataclick[count] = '-1'
            datatime[count] = timeNow

        if button == mouse.RIGHT:
            dataclick[count] = '1'
            datatime[count] = timeNow

        count += 1 # increase counter

    return count

def mymain():
    mywindow = Window(fullscreen = False)

    framerate = 60.0

    clock.set_fps_limit(framerate)

    mywindow.set_visible(True)

    # Necessary variables for the data file
    count = 0   # counter for each click
    dataclick   = [0]*15000
    datatime    = [0]*15000

    while not mywindow.has_exit:
        startMs = clock.tick() 

        mywindow.dispatch_events()
        count = dispatch_mouse_events(mywindow, count, dataclick, datatime)

        # Display frame
        mywindow.clear()           # clear window

        fps.draw()
        mywindow.flip()
    pass           

if __name__ == "__main__":
    fps = pyglet.clock.ClockDisplay(color=(1,1,1,1))
    mymain()

如何增加计数器并避免使用全局变量?

1 个答案:

答案 0 :(得分:1)

听起来你想要一个函数的静态变量。这是一个python示例...

What is the Python equivalent of static variables inside a function?