假設我有一個全局變量,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
提交
取消