Suppose I have a global variable
time that is incremented by 1 unit with every update of the window according to some FPS (for example in Pygame). Then suppose I have another variable defined in terms of
time, like this:
def function(): global time t = time // 3 final = t + 100 if t < final: pass else: pass
The behavior I want is that the variable
final stores the value of
t just when the function is first called and then
final becomes a constant, while
t keeps running together with
final would not always be 100 ahead of
t, which is what happens, but would be 100 ahead of
t just when the function first captures
t and then would keep that number unchanged. How can that be done?
You can make
final global and check if it has been set.
final = None def function(): global time, final t = time // 3 if not final: final = t + 100 # update once if t < final: pass else: pass
You can also create an attribute on the function itself.
def func(): global time t = time // 3 if not 'final' in dir(func): func.final = t + 100 # update once print(func.final) if t < func.final: pass else: pass time=10 func() time=20 func() time=30 func()
103 103 103