gpt4 book ai didi

python - 在模块内部使用时未定义 itertools

转载 作者:行者123 更新时间:2023-12-02 09:30:58 28 4
gpt4 key购买 nike

我将自定义函数保存在一个单独的模块中,以便在需要时调用。我的一个新函数使用 itertools,但我不断收到名称错误。

NameError: name 'itertools' is not defined

确实很奇怪。我可以在控制台中导入 itertools ,但是当我调用我的函数时,出现名称错误。通常,只要我先导入库,我就可以在自定义函数中使用其他库(pandas、sklearn 等)中的函数。

但是如果我在控制台中导入 itertools,将函数复制并粘贴到控制台中,然后调用该函数,它就可以正常工作。

这让我抓狂,但我想也许我只是不理解模块的规则或其他什么。

这是我在模块中使用的函数。它只是从 sklearn 示例之一复制并粘贴:

import itertools    
def plot_confusion_matrix(cm, classes,
normalize=False,
title='Confusion matrix',
cmap=plt.cm.Blues):
import itertools
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks, classes, rotation=45)
plt.yticks(tick_marks, classes)

if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print("Normalized confusion matrix")
else:
print('Confusion matrix, without normalization')

print(cm)

thresh = cm.max() / 2.
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
plt.text(j, i, cm[i, j],
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")

plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')

我尝试将其导入到函数内部、模块内部以及我调用它的文件内部 - 但都没有成功。如果我将其导入控制台就可以了。即使在控制台中导入它之后,如果我再次在我正在处理的文件中运行它,它也会给出相同的错误。

最佳答案

现在可以使用了。

重要的教训:如果编辑模块,则必须关闭并重新打开spyder/ipython/whatever。仅仅重置内核是不够的。我知道我很愚蠢,但也许这个答案会节省某人的时间。

关于python - 在模块内部使用时未定义 itertools,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41252311/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com