拼写错误的变量名称。避免这种错误的最佳方法是什么?

时间:2013-03-01 10:54:17

标签: python

来自编译语言的背景,没有动态类型,我发现Python中令人沮丧的是,可能会因为拼写错误而无意中引入新的变量名。

前几天我有一个例子,代码是这样的:

received = False

while not received:
   ...
   ...
   ...
   recieved = (some_conditional_statments)
   ...
   ...

print some_results

这里收到是一个布尔变量,应该在到达循环的终止条件时设置为true。显然,在这种情况下,由于拼写错误变量(rec * * ved),它会陷入无限循环中

显然编译器会立即发现这样的错误,我只是想知道人们使用什么技术来帮助避免像Python这样的错误?

2 个答案:

答案 0 :(得分:7)

使用合适的linter,并使用自动化测试(单元测试等)测试您的代码。大多数IDE和文本编辑器都可以设置为自动运行linter。

我建议使用flake8;它结合了pep8 style checker的输出,pyflakes linter(可以捕获上述错误,它会告诉你recieved被分配但从未在别处使用过)并会告诉你是否代码变得过于复杂(使用McCabe Cyclomatic complexity metric)。

答案 1 :(得分:4)

你可以使用pychecker来做这件事。

有一个question about python linters here,你应该检查一下。