python - 如何以编程方式确保函数包含 return 语句?

标签 python function

如何验证函数是否包含 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/

相关文章:

python - 'pip setup.py bdist_wheel' 不再构建强制非纯轮子

python - pyyaml 加载数为十进制

sql - PostgreSQL:使用自己的函数时将记录类型输出转换为表

excel - "Concatenate If"按行的 VBA 用户定义函数

python - 在 xubuntu 上使用 gnuplot 保存图表

Python 从上面的目录导入

python - 提取元素并插入空格

javascript - 为什么在 JavaScript 中 "Object instanceof Function"和 "Function instanceof Object"都返回 true?

C++ 平方函数

R:对数据框的多列进行行式计算的最快方法