在以下代码段中,
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
的错误。如果有人可以提供帮助,我将不胜感激。
答案 0 :(得分:7)
您正在运行陈旧的字节码,重新启动Python。
Python将源代码编译为字节码,并解释后者。这意味着解释器在编译后不能与源代码一起使用。
然而,我们人类无法很好地读取字节码,因此当出现异常且解释器希望我们了解出现问题的地方时,它会再次向您显示源代码。因此,当存在要显示的回溯时,源代码将按需加载,并且根据使用字节码记录的信息从源代码中获取行。
在您的情况下,您正在运行使用名称 <!DOCTYPE html>
<html>
<head>
<style type ="text/css">
p {color: blue;}
.underlined { text-decoration: underline }
.blue { color: blue }
</style>
</head>
<body>
<p class="underlined">This is my body green</p>
<p class="blue" >this text should be blue!</p>
<h1>Hello World!</h1>
<p>This is my first CSS example</p>
<ul>
<li>This is</li>
<li>a list</li>
</ul>
</body>
</html>
的字节码。但您已经更正了使用xrange
的源代码。字节码引发异常,Python有助于从磁盘加载源代码,并显示已更正的源代码。
解决方案是通过重新启动告诉Python重新编译源代码。如果重新启动没有帮助,那么Python已经确定源代码比它缓存的字节码更旧。删除源代码旁边的range
目录以清除字节码缓存,并删除可能与源位于同一目录中的任何__pycache__
文件。
请注意,您可以放弃.pyc
来电;您不必拥有list()
循环的列表; for
工作正常。