首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python奇怪的错误-赋值前引用的变量

Python奇怪的错误-赋值前引用的变量
EN

Stack Overflow用户
提问于 2014-03-13 23:53:21
回答 2查看 695关注 0票数 0

我一直在拿UnboundLocalError: local variable 'res' referenced before assignment

但是,我绝对肯定在赋值之前没有引用变量!

这是我的密码:

代码语言:javascript
复制
def get_models(self,x=None,y=None):
        bioservices_up_obj = UniProt()
        bioservices_quickgo_obj = QuickGO()
        res = bioservices_quickgo_obj.Annotation_from_protein(protein=str(Brick.part_attrib(self,'uniprot_id')))
        go_id = []
        go_number = len(res['goID'])
        for i in range(go_number):
            go_id.append(str(res.iloc[i]['goID']))
        results = bioservices_up_obj.search(go_id[:go_number],format="tab",columns="id",sort="score",maxTrials=2)
        print results

所有其他变量似乎都打印得很好,但出于某种原因,我一直得到这个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-14 00:05:58

在检查您正在使用的库的源之后

代码语言:javascript
复制
File "/usr/local/lib/python2.7/dist-packages/bioservices/uniprot.py", line 470, in search

看来第470行实际上确实有一个bug。同一文件中的第459行在最新版本中被注释掉,这似乎导致了错误。

这里下载tarball,打开uniprot.py,观察到:

代码语言:javascript
复制
#res = s.request("/uniprot/?query=zap70+AND+organism:9606&format=xml", params)
trials = 3
while trials<maxTrials:
    try:
        res = self.request("uniprot/?query=%s" % query + "&" + params, "txt")
        trials = maxTrials + 1
    except:
        self.logging.warning("Trying again...")
        import time
        time.sleep(2)
        trials += 1
return res

注意注释的第一行(文件中的第459行)。您可以尝试取消注释这一行,但我不熟悉库,所以我不知道这可能会做什么。

项目bug跟踪器是这里,也许您可以提交一个bug报告。

票数 1
EN

Stack Overflow用户

发布于 2014-03-13 23:59:25

我建议检查整个回溯消息,我认为异常来自另一种方法。

对不起:,我不能添加评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22393473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档