我是python编程的新手,并使用IntelliJ处理一个相当大的python模块。我想知道我是否有一个从多个地方调用的静态方法,并且我更改了此方法的签名以接受不同的no。论点。我可能会在某些地方修复实际的方法调用,但可能会错过在其他地方更改调用。在java中,我将收到一个编译时错误但是由于python被解释,我只会在运行时(可能在生产中)中找出它。直到现在我一直在使用命令' python -m compileall'但我想知道在Java中是否有任何方法可以在IntelliJ中获得语法错误。
答案 0 :(得分:1)
单元测试和静态代码分析工具(例如pylint
)会有所帮助。 pylint
能够检测传递给函数的参数数量不正确。
如果您使用的是Python 3,函数注释可能会很有用,mypy
可以键入检查带注释的函数调用(显然,我没有使用它)。
通常,在不破坏依赖代码的情况下更改现有函数签名的策略是使用关键字参数。例如,如果要向函数添加新参数,请将其添加为关键字参数:
#def f(a):
# """Original function"""
# print(a)
def f(a, b=None):
"""New and improved function"""
print(a)
if b is not None:
print(b)
现在使用和不使用新参数的调用将起作用:
>>> f('blah')
blah
>>> f('blah', 'cough')
blah
cough
当然,这并不总是有效,例如如果删除了参数,或者以破坏现有代码的方式更改了函数的语义。