您能否使用(linting)工具或编译步骤捕获python中的导入/名称和其他错误?
另一种选择是确保测试所有可能的代码路径(这并不总是可行的,特别是由于现有的大量代码库和其他原因)。
这里有一些例子.
syntax error而不是import error。def test():
print("Time now is ..", datetime.datetime())pylint输出:
E0602: Undefined variable 'datetime' (undefined-variable)from datetime import datetime
def test():
print("Time now is ..", datetime.today2())编辑:再添加一个选项.
执行import *显示了一些错误,但在函数中的语句中没有显示错误。
报告了此错误。
from datetime import datetime
print("today2", datetime.today2())错误:
Python 3.7.0 (default, Aug 22 2018, 15:22:56)
>>> from test import *
...
print("today2", datetime.today2())
AttributeError: type object 'datetime.datetime' has no attribute 'today2'
>>>这不是。
from datetime import datetime
def test():
print("Time now is ..", datetime.today2())发布于 2019-05-03 01:25:39
根据我的经验,flake8在捕获缺少的导入和命名错误方面做得很好。为了捕获缺少的导入,您不能使用通配符导入(如"from foo import *“),因为它无法猜测将创建哪些名称。此外,当语法错误存在时,它无法进行这些检测,因此必须首先修复这些错误。
发布于 2019-04-29 14:11:33
与编译语言c++不同,python是一种解释语言。这意味着它没有编译阶段。它逐行解释代码。
根据这一点,直到在运行时到达错误时才发现错误。
如果希望出现错误,则应该以某种方式抛出代码的每一行。最好的方法是使用具有100%测试覆盖率的测试库。
要获得更多信息,请查看this question和它的答案。
https://stackoverflow.com/questions/55813019
复制相似问题