奇怪的 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”的主要内容,如果未能解决你的问题,请参考以下文章