到目前为止Python
编程中最令人沮丧的事情之一是缺乏某种“预分析”。例如,在Java
中,在实际编译程序之前执行预分析,在该程序中检查诸如姓名使用之类的事情。换句话说,如果我在一个区域中调用变量list_one
,并且说我在另一个区域将它拼错为list_on
,Java会说“嘿,你不能这样做,我不知道list_on
是什么。”有没有办法预先命名冲突的Python程序?
Python
似乎没有这样做,这是非常令人沮丧的!我有一个程序,大约需要15分钟跑,而我是最后一件事14.5分钟,看进去是像
NameError: name 'list_on' is not defined
难道他们的任何可用的工具都可以在那里可以进行这种在解释器实际运行程序之前检查?如果没有,有什么办法解决这个问题?
试过'pylint'? – geoffspear
这不是一个“预分析”。这是*编译*! Java在编译时解析绑定,而python在运行时执行。在python中,你可以在运行时创建变量,因此它*不可* *可靠*在给定的程序中的特定时间点判断给定的变量是否存在。像'pylint'这样的工具可以在大多数情况下工作,但在更复杂的情况下可能会失败(尤其是在高度动态的代码中)。按照他们的方式:你应该进行单元测试,即测试代码的单个*部分*(这将在不到15分钟的时间内显示这个错误)。 – Bakuriu
[有没有用于Python的静态分析工具?](http://stackoverflow.com/questions/35470/are-there-any-static-analysis-tools-for-python) – Bakuriu