关于**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全能工程师
- 参与学习 人
- 提交作业 16247 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星