2

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

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

received = False

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

print some_results

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

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

4

2 回答 2

7

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

我建议使用flake8; 它结合了pep8样式检查器pyflakeslinter的输出(它会捕获上述错误,它会告诉您recieved已分配给但从未在其他地方使用过),并会告诉您您的代码是否变得太复杂(使用McCabe 圈复杂度指标)。

于 2013-03-01T10:55:47.347 回答
4

您可以将pychecker用于此类事情。

这里有一个关于 python linter的问题,你应该检查一下。

于 2013-03-01T10:57:32.813 回答