6

在追踪我的 Python 代码中的错误时,经常令人头疼的一个原因是看似无害的片段,如下所示:

 list = ['a', 'b', 'c', 'c']
 list(set(list))

这失败了,因为我已经用变量列表覆盖了函数 list() 。

显然是一个人为的例子,但重点是 Python 很高兴地让我用变量覆盖内置函数。我意识到这是 Python 中的一个关键特性,但如果解释器在我在代码中执行此操作时会警告我,我会非常喜欢它,因为我通常不打算这样做。

任何人都可以提出解决方案(不仅仅是更加小心) - 因为我一直在这个问题上绊倒?

4

5 回答 5

9

你应该使用Pylint。如果您使用的是 Eclipse + PyDev,您可以将其配置为在 IDE 中自动运行并突出显示此问题(以及许多其他问题)。

于 2011-03-02T14:30:57.680 回答
3

PyChecker之类的工具可能对您很有价值。另请参阅SO 讨论。

于 2011-03-02T14:31:24.093 回答
3

使用语法高亮文本编辑器,以与其余代码不同的颜色高亮关键字。

于 2011-03-02T15:11:18.760 回答
2

不小心使用保留名称是一个普遍问题。一般的补救措施是为您自己的对象(广义上)使用“好”的名称。这里的“好”是指根据要解决的问题的上下文告诉您有关命名对象的相关事实的名称。

对于玩具问题,这可能看起来需要付出很大的努力,但是即使您只是编写代码来学习一种语言的(特性),为什么不训练好的命名呢?所以使用你的版本

list_with_duplicates = [ ... ]
于 2011-03-02T14:48:23.340 回答
0

pylint会发现这个错误(以及许多其他错误)。

于 2011-03-02T14:33:12.707 回答