在以下代码段中,
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]
Run Code Online (Sandbox Code Playgroud)
你可以看到我没有使用xrange.虽然编写代码是为了在pyhton2上运行,但我重构了在python3上运行它.但是,我一直在收到以下错误:
................................Directory/network2.py", line 147, in SGD
for j in list(range(epochs)):
NameError: name 'xrange' is not defined
Run Code Online (Sandbox Code Playgroud)
一开始,我只用过range().然后在学习了range()不是python3中的列表之后我做了list(range()).但是,我xrange在两个修订案例中都会一直收到错误.如果有人能提供帮助,我将不胜
您可以使用(linting)工具或编译步骤来捕获python中的导入/名称和其他错误吗?
另一个选择是确保测试所有可能的代码路径(这并不总是可行的,尤其是对于现有的大型代码库和其他原因而言)
这里有些例子。
syntax error代替import error。def test():
print("Time now is ..", datetime.datetime())
Run Code Online (Sandbox Code Playgroud)
pylint输出:
E0602: Undefined variable 'datetime' (undefined-variable)
Run Code Online (Sandbox Code Playgroud)
from datetime import datetime
def test():
print("Time now is ..", datetime.today2())
Run Code Online (Sandbox Code Playgroud)
编辑:要添加另一个选项。
这样做会import *显示一些错误,但不会显示函数内部的语句中的错误。
报告此错误
from datetime import datetime
print("today2", datetime.today2())
Run Code Online (Sandbox Code Playgroud)
错误:
Python 3.7.0 (default, Aug 22 2018, 15:22:56)
>>> from test import *
...
print("today2", datetime.today2())
AttributeError: type object 'datetime.datetime' has no attribute 'today2'
>>>
Run Code Online (Sandbox Code Playgroud)
这不是。
from datetime import …Run Code Online (Sandbox Code Playgroud) 在Python(更具体地说是Python 3.x)中,如果我说x = x,在低级别对x可变(如list)的引用或对不可变(如int)的引用,会发生什么?编译器是否只是忽略了这些废话?
更具体地说,如果我们有以下情况,编译器会做什么:
class A:
def __init__(self):
self.a = self.init_a()
def init_a(self):
self.a = some_value
"""
do stuff with self.a here
"""
return self.a
Run Code Online (Sandbox Code Playgroud)
对于那些没有注意到的人,self.a通过函数有效地分配给自己init_a(self).
我知道class A上面的这个案例看起来很傻,但是我试图通过清楚地初始化__init__(self)函数内部的所有成员变量来保持我的代码清晰可读(在我实现的另一个类中).我只想知道编译器是否优化了这一步,或者它是否在任何情况下执行某些操作,即使该语句没有产生任何结果(我猜它会被优化掉,但我想成为当然 - 你永远不知道).
Python是一种解释型语言,所以它在我运行时逐行执行代码
import csv,re,sys
print len(sys.argv)
if(len(sys.argv)!=2):
sys.exit(0)
filename= #from command line argument
Run Code Online (Sandbox Code Playgroud)
它甚至不执行一行并给出语法错误.
现在我的问题是代码的最后一行有错误,但Python解释器逐行执行代码行这样的代码到最后一行是正确的,所以应该高达最后一行执行代码,但它给我下面的错误和不打印我在第2行中定义的sys.argv的长度
File "trace-analysis.py", line 45
filename = # from command line argument
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我没有得到这种行为......请有人解释一下......