Python 如何在触发后执行函数

Python 如何在触发后执行函数,python,Python,我想构建一个函数,该函数在x个游戏(运行)后执行 因此,如果运行%5==0,我将设置,但我注意到,函数不是执行一次而是执行多次(这不是我的意图) 代码如下: def update_weights(self, run): if run % UPDATE_MODEL == 0: weights = self.model.get_weights() self.target_model.set_weights(weights)

我想构建一个函数,该函数在x个游戏(运行)后执行

因此,如果运行%5==0,我将设置
,但我注意到,函数不是执行一次而是执行多次(这不是我的意图)

代码如下:

def update_weights(self, run):
        if run % UPDATE_MODEL == 0:
            weights = self.model.get_weights()
            self.target_model.set_weights(weights)
            print("Updated Model")

while True:
        run += 1
        while True:
                step += 1
                more code...
                if done:
                        break
                update_weights()
当我运行此代码时,它会打印:

Updated Model
Updated Model
Updated Model
...

(这就是我首先注意到这一点的原因)

确保每次运行只调用一次
update\u weights
,在第二个嵌套while循环中无限期地调用它


我相信它应该在第一个while循环中。

您永远不会传递
update\u权重
参数,
step
&
run
是未定义的。您这里的代码应该在几个方面出错。话虽如此,你确定它每一轮都在更新吗?在
update\u weights
中的
if
之外添加一个打印项以进行双重检查。@Error-syntactical懊悔只是说。。。我认为你的名字是你评论的一部分,作为链接。因为它很合身comment@Error-语法自责:如果是
def update_weights():
这将起作用,前提是在正确的范围内调用函数(定义了
self
run
)。无论如何,我想说这个问题需要澄清,这样才能弄清楚实际问题是什么。@fuppes先生,我同意这两种说法。这段代码应该可以工作,但是有很多缺少的上下文,因此OP需要添加实际代码,而不是烘焙的伪代码。@错误语法自责/添加:我同意您的观点,明确声明函数参数是更好的做法。