编码时如何阻止自己覆盖Python函数?

时间:2011-03-02 14:26:58

标签: python function built-in

在我的Python代码中追踪错误时,一直是一个令人头痛的问题,看起来像是无关紧要的片段:

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

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

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

任何人都可以建议一个解决方案(除了更加小心) - 因为我一直在绊倒这个问题吗?

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

PyChecker这样的工具可能对您有价值。另见this SO讨论。

答案 2 :(得分:3)

使用语法高亮文本编辑器,该编辑器将突出显示与其余代码颜色不同的关键字。

答案 3 :(得分:2)

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

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

版本
list_with_duplicates = [ ... ]

答案 4 :(得分:0)

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