修复因另一个变量而变化的变量的值

假设我有一个全局变量,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


摇曳的蔷薇
浏览 36回答 1
1回答

芜湖不芜

您可以将final其设置为全局并检查是否已设置。final = Nonedef function():&nbsp; &nbsp; global time, final&nbsp; &nbsp; t = time // 3&nbsp; &nbsp; if not final: final = t + 100&nbsp; # update once&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if t < final:&nbsp; &nbsp; &nbsp; &nbsp; pass&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; pass您还可以在函数本身上创建属性。def func():&nbsp; &nbsp; global time&nbsp; &nbsp; t = time // 3&nbsp; &nbsp; if not 'final' in dir(func): func.final = t + 100&nbsp; # update once&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; print(func.final)&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; if t < func.final:&nbsp; &nbsp; &nbsp; &nbsp; pass&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; passtime=10func()time=20func()time=30func()输出103103103
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python