为什么我的方法中的前两个赋值语句连续运行两次?

问题描述 投票:0回答:1
    def step(self, t, action):
        done = (True if (self.state == self.T) else False)
        self.state += 1
        self.S[self.state] = self.lFn()
        return self.state, self.getReward(t, action), done

我正在使用 Python 3.9 进行强化学习项目,我的

step
方法在课堂上遇到了问题。当我运行代码时,方法中的前两个赋值语句似乎连续运行了两次。我刚开始使用 Python 编写面向对象的内容,不确定这是由于我的代码中的问题还是 Python 内核的性质造成的。对于可能导致此问题的原因以及如何解决它的任何指导,我将不胜感激。

python reinforcement-learning
1个回答
1
投票

(完全无趣的)答案是:第 140 行包含一个

if
语句和一个赋值。它们是顺序执行的;调试器没有简单的方法来告诉您正在执行该行的哪一部分,因此该行“执行了两次”。

更简洁的写法,在调试器中看起来也很自然,是:

done = self.state == self.T
© www.soinside.com 2019 - 2024. All rights reserved.