我正在尝试确定为什么此代码不起作用。我正在学习教程,但我一生都无法像教程中那样轻松地使用此代码。
我收到的错误是“全局变量 X 未定义”。
当我调试函数时,它会直接跳过全局声明。 PyCharm 还警告未在模块级别定义声明。
def sentence_to_indices(sentence_words, word_to_index, max_len, i):
global X, Y # Global variable 'X' & 'Y' is undefined at the module level
sentence_indices = []
for j, w in enumerate(sentence_words):
try:
index = word_to_index[w]
except:
UNKS.append(w)
w = cleared(w)
try:
index = word_to_index[w]
except:
index = word_to_index['unk']
unks.append(w)
X[i, j] = index
这里是调用函数的地方
try:
for i, tk_lb in enumerate(cleaned_tokens_list):
tokens, label = tk_lb
sentence_to_indices(tokens, word_to_index, max_len, i)
Y[i] = label
except Exception as e:
print(e)
答案 0 :(得分:0)
您需要在函数外部声明变量,然后才能将它们与 global
一起使用。
尝试在代码开头执行此操作:
X = None
Y = None
答案 1 :(得分:0)
解决方案实际上是删除全局声明。因为他们甚至不需要。我会为自己这么愚蠢承担一些责任。虽然我会指出我正在遵循的教程。
答案 2 :(得分:0)
您没有在函数外定义 X 和 Y。您可以在此函数之前删除全局或定义 X 和 Y