运行Python threading定时代码时第5行出现unresolved reference错误如何解决
问题原因
你代码里的报错和功能异常主要来自三个问题:
global关键字的使用语法错误:Python不支持在声明全局变量的同时赋值,global change = 0属于非法写法,这是未解析引用报错的直接原因- 变量初始化逻辑错误:如果把
change = 0写在inchange函数内部,每次定时触发函数执行时都会重置变量值,无法实现累加效果 - 定时时长不匹配:当前
threading.Timer的第一个参数为1,对应1秒触发一次,和你需要的2秒间隔要求不符
修正后的代码
import threading # 全局作用域初始化change变量 change = 0 def inchange(): # 仅声明change为全局变量,不要在这里赋值 global change # 修改定时时长为2秒 threading.Timer(2, inchange).start() change = change + 2 print(change) if __name__ == "__main__": inchange()
验证效果
运行代码后会每隔2秒依次输出2、4、6、8……,符合预期功能需求。
内容的提问来源于stack exchange,提问作者Ritik Singh
相关产品推荐
相关产品推荐

