我有时会忘记从函数中返回结果
:
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
而不在其他地方创建非常丑陋的代码。无论如何,为每个函数添加一个装饰器看起来 super 丑陋。
请注意,我确实有一些函数,但我故意没有 return
语句。我倾向于保持一定的命名约定,这让我很容易区分它们。 (具体来说,每个以 get_
开头的函数都必须有一个 return 语句。)
最佳答案
我建议不要养成这样做的习惯
def something():
...
result = ...
return result
只是做:
def something():
...
return ...
除此之外,默认情况下返回 None
在 99% 的情况下都是有用的功能。
关于python - 忘记从函数返回结果 : how to prevent this bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067185/