如何验证函数是否包含 return
关键词?我经常忘记返回行,所以我担心我的包的用户在提供基于函数的输入时也会忘记。
def appler():
a = "apple"
# `return` is missing
def bananer():
b = "banana"
return b
我可以解析包含 "return"
的最后一行的函数的实际代码字符串。但这不是很健壮(它可能由评论触发)。def validate_funk(funk):
if condition_to_check_that_it_contains_rtrn:
pass
else:
raise ValueError(f"Yikes - The function you provided not contain a `return` statement:\n\n{funk}")
>>> validate_funk(appler)
#triggers ValueError
>>> validate_funk(bananer)
# passes
编辑:理想情况下不运行该功能。
最佳答案
你真正关心的可能不是 return 语句本身,而是函数返回某种类型的东西。您可以使用 type hints (PEP 484) 最轻松地完成此操作。 :
def appler() -> str:
a = "apple"
# `return` is missing
def bananer() -> str:
b = "banana"
return b
现在,运行 static analysis tool像 mypy 或 Pyre(或许多其他人):将发出关于函数 appler
中错误返回类型的警告(预期 str
,得到 NoneType
)。寻找 sabik 的答案以获得更一般的答案。编写(单元)测试是另一个很好的实践,它可以捕捉到更多的问题,而且——如果做得好——是对代码可维护性的投资。
关于python - 如何以编程方式确保函数包含 return 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67074975/