【发布时间】:2021-04-13 12:34:03
【问题描述】:
如何验证函数是否包含 return 关键字?我经常忘记返回行,所以我担心我的包的用户在提供基于函数的输入时也会忘记。
def appler():
a = "apple"
# `return` is missing
def bananer():
b = "banana"
return b
我可以解析函数的实际代码字符串以获得包含"return" 的最后一行,但这不是很健壮(它可能由 cmets 触发)。
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
编辑:理想情况下不运行该函数。
【问题讨论】:
-
当您为代码/函数编写单元测试时,这不会成为问题
-
其中一些可以帮助您避免犯错吗? blog.codacy.com/which-python-static-analysis-tools-should-i-use
-
funk 是用户提供的参数。
-
顺便说一句,问题中的两个函数都很简单,它们可能应该跳过局部变量;只是:
def appler(): return "apple"