如何实现多函数返回值检查:全部返回False时输出‘not involved’
解决方案
首先要纠正你提供的示例代码里的两个问题:
func1内部递归调用自己会导致无限循环,直接触发栈溢出错误- 逻辑判断写法错误,
func1() and func2() and func3() ==False的运算优先级会先执行func1() and func2() and func3(),再判断结果是否等于False,这和你要的“所有函数都返回False”逻辑不符
下面是正确的实现方式:
步骤1:定义测试函数
先写几个示例函数,它们会返回布尔值(你可以根据实际需求修改函数逻辑):
def func1(): # 示例逻辑:返回False return False def func2(): # 示例逻辑:返回False return False def func3(): # 示例逻辑:返回False return False
步骤2:主函数中检查所有函数返回值
在主函数里,我们可以把要检查的函数放进列表,用all()函数批量判断是否所有函数的返回值都是False:
def main(): # 把需要检查的函数存入列表 functions_to_check = [func1, func2, func3] # 检查所有函数返回值是否全为False if all(not func() for func in functions_to_check): print("not involved") # 执行主函数 if __name__ == "__main__": main()
逻辑说明
all(not func() for func in functions_to_check):遍历列表里的每个函数,调用后取反(因为我们要判断原返回值是False,取反后是True),当所有取反结果都是True时,all()返回True,就触发打印逻辑- 这种写法的好处是后续要新增检查的函数,只要往列表里加函数名就行,不用修改判断条件
如果你不想用all(),也可以写显式的条件判断,适合函数数量少的场景:
def main(): if func1() is False and func2() is False and func3() is False: print("not involved")
内容的提问来源于stack exchange,提问作者Fateme Ghvl
相关产品推荐
相关产品推荐

