下面是一个Python脚本的示例:
n, dollar, euro = map(input().split())
if n == 1:
print(dolar / euro) # Note the typo, 'dolar' vs. 'dollar'
else:
print(euro / dollar)我犯了一个错误("dolar“和一个”l“)。除非您输入n = 1,否则解释器不会通知您error(NameError)或甚至是警告。
如何在运行时通知我这一点?
发布于 2012-08-24 01:32:17
pylint会将其报告为E: 3: Undefined variable 'dolar',并为您提供许多有用的风格提示。
Python本身不会出现这样的编译时错误,因为如果不运行导致该错误的代码,它就不能真正告诉您不是动态创建该名称。(即使你碰巧这样做了,Pylint也会认为这是一个错误,这是很好的,因为如果你写了这样的代码,你应该得到很差的分数……)
发布于 2012-08-24 01:32:52
使用Pylint:
sucmac:~ ajung$ /tmp/bin/pylint ou.py
No config file found, using default configuration
************* Module ou
W: 3,0: Bad indentation. Found 3 spaces, expected 4
W: 5,0: Bad indentation. Found 3 spaces, expected 4
C: 1,0: Missing docstring
C: 1,0: Invalid name "n" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 1,3: Invalid name "dollar" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 1,11: Invalid name "euro" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
W: 1,18: Used builtin function 'map'
W: 1,22: Used builtin function 'input'
E: 3,9: Undefined variable 'dolar'发布于 2012-08-24 01:30:51
Python不能在运行前通知您,因为有一些方法可以在该行出现之前将"dolar“插入到符号表中,并且Python在实际尝试运行该行之前无法检测到您是否已经这样做了。正如Josh Lee所说,您最好的选择是创建一个测试套件,(至少)测试代码的每一行。
https://stackoverflow.com/questions/12097010
复制相似问题