如何在未执行的代码中查找异常?

时间:2016-10-20 08:46:43

标签: python

在这个简单的Python代码中,如果a的值从0更改,则会有NameError显示b未定义。但是,如果永远不执行else子句,则错误仍然隐藏。我怎样才能发现这类错误?

a=0
if a==0 :
  print "hello"
else :
  print b

2 个答案:

答案 0 :(得分:4)

pylint能够在不执行它的情况下在python代码中找到许多常见(而不是那么常见)错误,例子输出示例:

C:  1, 0: Exactly one space required around assignment
a=0
 ^ (bad-whitespace)
C:  2, 0: Exactly one space required around comparison
if a==0 :
    ^^ (bad-whitespace)
C:  2, 0: No space allowed before :
if a==0 :
        ^ (bad-whitespace)
C:  4, 0: No space allowed before :
else :
     ^ (bad-whitespace)
C:  1, 0: Missing module docstring (missing-docstring)
C:  1, 0: Invalid constant name "a" (invalid-name)
E:  5,10: Undefined variable 'b' (undefined-variable)

您对此感兴趣的一行是:E: 5,10: Undefined variable 'b' (undefined-variable)

答案 1 :(得分:2)

有两种方法可以实现这一目标:

  1. try/except块中包含此类语句。例如:

    Exception

    使用也可以使用traceback获取与提出的from keras.models import Sequential from keras.layers import Dense, Activation, Convolution2D, Flatten, MaxPooling2D, Dropout import numpy def get_model(): # implement your model here model = Sequential() model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(48, 48, 1))) model.add(Flatten()) model.add(Dense(7)) model.add(Activation('softmax')) optimization_method = 'sgd' model.compile(loss='categorical_crossentropy', optimizer=optimization_method, metrics=['accuracy']) return model 相关的所有信息。

  2. 如果您想在函数范围内使用此行为,请创建一个decorator并将该装饰器与您需要此行为的函数一起使用。