Python 检测内置重新定义(假=真)

Python 检测内置重新定义(假=真),python,Python,在一次代码审查中,我偶然发现了一个有趣的问题。由于Python中的一切都是动态的,因此可以执行以下操作: False = True if False: print "Yes please!" 其行为正确,并打印出是,请。在理解这种行为背后的原理的同时,是否有任何自动代码检查器可以检测到这种行为 我总是可以检查locals()或globals()中是否存在“False”,或者检查大量其他方法是否存在相同的效果。虽然这可能与传统软件开发无关,但在数据分析管道等方面有时会出现类似于his的错

在一次代码审查中,我偶然发现了一个有趣的问题。由于Python中的一切都是动态的,因此可以执行以下操作:

False = True
if False:
    print "Yes please!"
其行为正确,并打印出
是,请。在理解这种行为背后的原理的同时,是否有任何自动代码检查器可以检测到这种行为

我总是可以检查
locals()
globals()
中是否存在“False”,或者检查大量其他方法是否存在相同的效果。虽然这可能与传统软件开发无关,但在数据分析管道等方面有时会出现类似于his的错误。

对于它的价值,确实会检测到这一点,以及对任何内置软件的重新定义:

dan@dantop:~$pylint h.py
未找到配置文件,使用默认配置
*************模块h
W:1,0:重新定义内置的“False”
h.py:

False = True
您可以使用来检查此类分配。它将显示一个警告

W:  1, 0: Redefining built-in 'False' (redefined-builtin)

注意,在Python3中,这是不允许的。你会得到一个
SyntaxError:assignment to keyword
没有必要去检测它。你会在哪里划界?你打算检测每一个可能的编程错误吗?任何在生产代码中这样做的程序员,或者仅仅是为了测试它是否可能的程序员,都应该被当场解雇。。。也就是说,任何一个皮棉检验员都可能捕捉到像这样异常的东西。。。尝试pylint如果所有测试仍然通过,这是否是一个“错误”?@petr try pylint。。。它肯定会提醒你不要跟踪Builtin谢谢,这就是我要找的-会更好地查看pylint