奇怪的 NameError:未定义全局名称“StrList”

Posted

技术标签:

【中文标题】奇怪的 NameError:未定义全局名称“StrList”【英文标题】:Weird NameError: global name 'StrList' is not defined 【发布时间】:2013-07-03 01:22:40 【问题描述】:

我有这段代码,我认为看起来不错

def makeInverseIndex(strList):
    numStrList = list(enumerate(strList))
    n = 0
    dictionary = 
    while (n < len(strList)):
        for word in numStrList[n][1].split():
            if word not in dictionary:
                dictionary[word] = numStrList[n][0]
            elif numStrList[n][0] not in dictionary[word]:
                dictionary[word]|=numStrList[n][0] 
        n = n+1                     

    return dictionary

但是当我尝试运行该模块时,我设法得到了这个错误:

   >>> makeInverseIndex(L)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "./inverse_index_lab.py", line 21, in makeInverseIndex
    for word in numStrList[n][1].split():
NameError: global name 'StrList' is not defined

我看不出错误来自哪里。

我想输入如下内容:

 L=['A B C', 'B C E', 'A E', 'C D A']

并将其作为输出:

D='A':0,2,3, 'B':0,1, 'C':0,3, 'D':3, 'E':1,2

【问题讨论】:

修正问题中的缩进。 这正是它返回的内容。你确定吗?当我运行它时,我得到了这个'A': set([0, 2, 3]), 'C': set([0, 1, 3]), 'B': set([0, 1]), 'E': set([1, 2]), 'D': set([3]) @enginefree,Python3 以不同的方式显示集合。但问题中C 的值似乎仍然错误 @gnibbler 但是C 包含在0,1,3 索引中,而不仅仅是在0,3 中。 @enginefree,这就是我说“在问题中”时的意思。对不起,如果我不清楚 【参考方案1】:

看起来你修改了模块但没有重新加载它。

回溯向您显示源文件中该行的当前内容,这可能与您加载模块时不同。

【讨论】:

就是这样!谢谢,我是新人

以上是关于奇怪的 NameError:未定义全局名称“StrList”的主要内容,如果未能解决你的问题,请参考以下文章

NameError:未定义全局名称“reduce”

NameError:未定义全局名称“QColor”

熊猫不进口吗? 'NameError:未定义全局名称'pandas''

NameError:未定义全局名称“lower”

NameError:未定义全局名称

DD.close() NameError: 全局名称 'DD' 未定义