You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何让函数获取已评估变量的更新值且仅一次磁盘读

问题原因

Python 函数的默认参数仅在函数定义阶段评估一次,后续调用函数时如果不传参,会一直使用第一次绑定的值,不会随变量更新重新计算,这就是你每次调用f1拿到的arg1都是初始值10,输出一直是20的核心原因。

实现方案

你可以直接去掉函数的默认参数,在函数内部直接读取全局变量var_to_eval即可,全程只需要初始化时执行一次磁盘读,后续都从内存读取更新后的值,修改后代码如下:

import schedule
import time

# 仅初始执行一次磁盘读
with open ("number.txt", "r") as myfile:
    data = int(myfile.read())
    var_to_eval = data
 
def f1():
    global var_to_eval
    # 直接读取内存中的全局变量,每次都是最新值
    current_val = var_to_eval
    print(current_val + 10)
    new_val = current_val + 10
    with open("number.txt", "w") as myfile:
        myfile.write(str(new_val))
    # 更新内存中的全局变量
    var_to_eval = new_val
    

schedule.every(3).seconds.do(f1)

while True:
    schedule.run_pending()
    time.sleep(1)
运行效果

代码执行后输出会按预期逐次递增:

20
30
40
...

内容的提问来源于stack exchange,提问作者Lucas Schwartz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:54:04