关于**kwargs递归后产生的不知名变化
老师,问题是:我定义了一个函数,使用的变量是**kwargs的,我是由time.time()时间戳来判定超过多少秒后需要递归,但是递归一次后,再次赋值后当前时间,时间只过几秒,但却满足了原来的指定超过31秒的判断,这是什么原因。(由于中间执行代码不在课程内的,所以避免浪费老师多余时间,我就把他删了)
def move_roleEx(self, **kwargs):
for key, value in kwargs.items(): # 分解出**kwargs的值, 并做出循环
print(kwargs)
t = time.time() # 用t记录当前时间戳
print('old_time:', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(t)))
t2 = time.time() # 用t2记录当前时间戳
while True: # 开始循环
# 假设这里执行了一堆代码
if XX == XX : 满足某个条件后,退出where循环,达到下次循环
# 执行了一段代码
break
elif time.time() - t2 >= 10: # 当超过10秒钟未到达目的地,则重新将鼠标放下弹起
# 第一次时间到达指定位置后,做出改变继续执行
t2 = time.time() # 再次将当前时间戳给变量t2
if time.time() - t >= 31: # 当超过31秒钟未到达目的地,则重新将鼠标放下弹起
print('超过31秒未移动,返回地图')
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(t_now)))
# 这里开始出问题,当执行代码超过31秒时,则开始递归
# 一旦开始递归后,一执行代码,就直接满足了time.time()-t > 31这个条件
# 然后进入了这里,再次执行递归,无限循环下去,但是递归的时候,上面是有再次赋值当前时间的
self.move_roleEx(**kwargs) # 递归9
收起
正在回答 回答被采纳积分+1
2回答
慕的地8261015
2022-11-09 11:49:50
我print了相应的数据,得到的结果是前几次循环都正常,但最后一次循环,就莫名的回归了第一次记录的时间戳。

代码执行时间上面的0.46秒是差不多时间的。但是到达这一次后,突然跳了时间,并且时间由原来的11:41分回溯到了11:40分的时候
Python全能工程师
- 参与学习 人
- 提交作业 16421 份
- 解答问题 4469 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星