from inspect import getsourcelines
def f(n):
return 2 * n
def g(n):
print(n)
def does_function_have_return(func):
lines, _ = getsourcelines(func)
return any("return" in line for line in lines) # might give false positives, use regex for better checks
print(does_function_have_return(f))
print(does_function_have_return(g))
根据定义,函数总是返回某些值。即使不指定它,在python函数的末尾也有一个隐式的
return None
。在您可以使用inspect模块检查“返回”。在
编辑:我刚刚意识到。这是非常错误的,因为如果函数中有一个字符串文本包含“return”,那么它将返回True。我想一个健壮的正则表达式会有帮助。在
我喜欢st0le检查源代码的想法,但是您可以更进一步,将源代码解析为源代码树,这样可以消除误报的可能性。在
结果:
^{pr2}$当然,这只适用于那些源代码是用Python编写的函数,而不是所有函数都是这样。例如,
contains_explicit_return(math.sqrt)
将给您一个TypeError。在此外,这不会告诉您函数的任何特定执行是否命中return语句。考虑以下功能:
contains_explicit_return
将给出{相关问题 更多 >
编程相关推荐