gpt4 book ai didi

python - 当我一开始就没有使用 xrange 时,为什么没有定义 xrange?

转载 作者:太空狗 更新时间:2023-10-30 00:53:27 28 4
gpt4 key购买 nike

在下面的代码片段中,

if evaluation_data: 
n_data = len(evaluation_data)
n = len(training_data)
evaluation_cost, evaluation_accuracy = [], []
training_cost, training_accuracy = [], []
for j in list(range(epochs)):
random.shuffle(training_data)
mini_batches = training_data[k:k+mini_batch_size]

你可以看到我没有使用xrange。虽然代码是为在pyhton2上运行而编写的,但我重构为在python3上运行它。但是,我不断收到以下错误:

................................Directory/network2.py", line 147, in SGD
for j in list(range(epochs)):
NameError: name 'xrange' is not defined

一开始,我只使用了range()。然后在得知 range() 不是 python3 中的列表后,我做了 list(range())。但是,在两种修改后的情况下,我都不断收到 xrange 的错误。如果有人可以提供帮助,我们将不胜感激。

最佳答案

你正在运行陈旧的字节码,重新启动 Python。

Python 将源代码编译为字节码,并解释后者。这意味着编译后的解释器不能使用源代码

但是,我们人类并不能很好地阅读字节码,所以当出现异常并且解释器要我们了解哪里出了问题时,它会再次向您展示源代码。因此,当要显示回溯时,源代码按需加载,并根据字节码记录的信息从源代码中提取行。

在您的例子中,您正在运行使用名称 xrange 的字节码。但是您已经更正了源代码以改为使用 range。字节码抛出异常,Python 帮助从磁盘加载源代码,并显示已更正的源代码

解决方案是通过重新启动告诉 Python 重新编译源代码。如果重新启动没有帮助,则 Python 确定源代码比它缓存的字节码旧。删除源代码旁边的 __pycache__ 目录以清除字节码缓存,并删除可能与源代码位于同一目录中的所有 .pyc 文件。

请注意,您可以删除 list() 调用;您不必为 for 循环工作准备一个列表; for j in range(epoch): 工作得很好。

关于python - 当我一开始就没有使用 xrange 时,为什么没有定义 xrange?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46838639/

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