来自编译语言的背景,没有动态类型,我发现Python中令人沮丧的是,可能会因为拼写错误而无意中引入新的变量名。
前几天我有一个例子,代码是这样的:
received = False
while not received:
...
...
...
recieved = (some_conditional_statments)
...
...
print some_results
这里收到是一个布尔变量,应该在到达循环的终止条件时设置为true。显然,在这种情况下,由于拼写错误变量(rec * 即 * ved),它会陷入无限循环中
显然编译器会立即发现这样的错误,我只是想知道人们使用什么技术来帮助避免像Python这样的错误?
答案 0 :(得分:7)
使用合适的linter,并使用自动化测试(单元测试等)测试您的代码。大多数IDE和文本编辑器都可以设置为自动运行linter。
我建议使用flake8
;它结合了pep8
style checker的输出,pyflakes
linter(可以捕获上述错误,它会告诉你recieved
被分配但从未在别处使用过)并会告诉你是否代码变得过于复杂(使用McCabe Cyclomatic complexity metric)。
答案 1 :(得分:4)
你可以使用pychecker来做这件事。
有一个question about python linters here,你应该检查一下。