首页 > 解决方案 > UnboundLocalError,试图将变量传递给先前在同一函数中初始化的函数

问题描述

在下面的函数中,我试图初始化一些参数,然后在同一个函数调用的稍后阶段将这些相同的参数传递给同一个函数......但是,我不断收到相同的 Unboundlocalerror,我查看了这个错误在其他帖子上,但他们似乎都建议将变量定义为全局变量,但是,这并没有解决任何问题......

这是函数调用:

    fast_weights, bert_velocity_params = self.update_bert_velocity_params(weights_for_grad = weights_for_grad,
                                            gvs = gvs, sgd_momentum = True) if config.sgd_mom \

然后一旦我有了bert_velocity_params,我想通过将它重新传递到同一个函数来更新同一个变量,如下所示:

            fast_weights, bert_velocity_params = self.update_bert_velocity_params(weights_for_grad= fast_weights,
                                                            gvs = gvs, sgd_momentum = True,
                                                            lr_id = lr_id, velocity_weights= bert_velocity_params) if config.sgd_mom \

velocity_weights默认值为None。尽管在第一次调用中为它分配了一个值,但它一直在抛出bert_velocity_params referenced before assignment error......有人知道我做错了什么吗?

问题出在第二个代码块中,特别是通过velocity_weights = bert_velocity_params,如果我通过 None,它工作正常......所以问题是,如果它对fast_weights参数工作正常,为什么它对 bert_velocity_params 参数不起作用?

标签: python-3.xvariablesscopeglobal-variablespass-by-reference

解决方案


推荐阅读