我有时会忘记return result
从一个函数:
def f(*args):
# do stuff
result = # an expression
# oops forgot to return result
由于None
在我的应用程序中是一个有效值,因此这不会在调用者中引发任何异常甚至任何警报。当然,我尽量小心。但我想知道是否有一些巧妙的方法可以警告我任何没有明确返回值的函数。
也许我可以通过我的代码运行一个正则表达式来找到这种情况。或者一些代码检查工具(希望在Windows环境下可用)。
我什至在考虑使用这样的装饰器:
def requires_return(func):
def new_func(*args, **kwargs):
result = func(*args, **kwargs)
if result is None:
print('Warning: {} may be missing a return statement'.format(func.__name__))
return result
但这行不通,因为:
许多误报:每次函数实际返回
None
.None
如果不在其他地方创建非常丑陋的代码,我就无法停止在我的应用程序中使用。无论如何,为每个函数添加一个装饰器看起来超级丑陋。
请注意,我确实有故意没有return
声明的功能。我倾向于保持一定的命名约定,这让我很容易区分它们。(具体来说,每个以 开头的函数都get_
必须有一个 return 语句。)