Python TIME模块函数内代码报错UnboundLocalError求解
问题排查与解决
错误原因
你遇到的UnboundLocalError是两个问题叠加导致的:
- 变量未定义:循环条件里的
time是未赋值的变量名,你直接使用了一个不存在的变量。 - 命名冲突:这个
time和你导入的time模块同名,在函数内部的作用域规则下,Python会优先将其识别为局部变量,直接遮蔽了全局的time模块,哪怕开头导入了模块也无法正常调用。
另外原循环逻辑也不合理:int(time.time()) - start != time的判断逻辑存在漏洞,哪怕定义了变量,也可能因系统时间跳变导致死循环,应该沿用你之前正常代码的思路——判断已用时间小于设定时长。
修正方案
- 给时长变量换个不冲突的名字(比如
duration),提前定义好计时长度(如5秒)。 - 修正循环条件为判断已用时间小于设定时长。
修正后的代码片段示例:
import time def your_combat_function(): duration = 5 # 自定义战斗持续时长,单位秒 start = int(time.time()) hits = 0 while int(time.time()) - start < duration: # 这里编写你的战斗逻辑代码 # 示例:模拟攻击计数 hits += 1 print(f"击中次数: {hits}") time.sleep(0.3) # 避免循环执行过快 your_combat_function()
为何单独运行的代码正常?
之前的独立代码直接用固定数值2作为时长,既没有使用time作为变量名,不存在未定义变量的问题,也不会和time模块产生命名冲突,因此能正常运行。
内容的提问来源于stack exchange,提问作者MrDDog
相关产品推荐
相关产品推荐

