假设我有一个全局变量,time每次窗口更新时,该变量都会根据某个 FPS(例如在 Pygame 中)增加 1 个单位。然后假设我有另一个根据 定义的变量time,如下所示:def function(): global time t = time // 3 final = t + 100 if t < final: pass else: pass我想要的行为是变量存储函数第一次调用时final的值,然后变成常量,同时与 一起运行。因此,并不总是比 提前 100 (这正是发生的情况),而是在函数第一次捕获时比 提前 100 ,然后保持该数字不变。那怎么办呢?tfinalttimefinalttt
1 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
您可以将final其设置为全局并检查是否已设置。
final = None
def function():
global time, final
t = time // 3
if not final: final = t + 100 # update once
if t < final:
pass
else:
pass
您还可以在函数本身上创建属性。
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
添加回答
举报
0/150
提交
取消