关于**kwargs递归后产生的不知名变化

关于**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) # 递归


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小猿 2022-11-09 11:53:58

同学,你好!根据代码是time.time()-t>=31 是满足了条件才会执行的if 条件,同学可以输出下time.time()与t的时间。祝学习愉快~

  • 提问者 慕的地8261015 #1

    我print了相应的数据,得到的结果是前几次循环都正常,但最后一次循环,就莫名的回归了第一次记录的时间戳。

    https://img1.sycdn.imooc.com//climg/636b232509cc571b05660664.jpg

    代码执行时间上面的0.46秒是差不多时间的。但是到达这一次后,突然跳了时间,并且时间由原来的11:41分回溯到了11:40分的时候


    2022-11-09 12:09:22
慕的地8261015 提问者 2022-11-09 11:49:50

我print了相应的数据,得到的结果是前几次循环都正常,但最后一次循环,就莫名的回归了第一次记录的时间戳。

https://img1.sycdn.imooc.com//climg/636b232509cc571b05660664.jpg

代码执行时间上面的0.46秒是差不多时间的。但是到达这一次后,突然跳了时间,并且时间由原来的11:41分回溯到了11:40分的时候

  • 同学,你好!根据同学提供的代码,没有出现获取时间不对的问题。同学只提供部分代码,无法复现同学遇到的问题,同学自己项目的问题,建议自己使用断点调试程序。祝学习愉快~

    2022-11-09 13:17:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师