Python如何让外层函数按优先级返回嵌套内层函数的有效结果
问题分析
原有代码存在两处问题:
- 语法错误:嵌套函数内
if i == a + b +c行末尾缺失冒号,无法直接运行 - 逻辑缺失:三次调用
nested_method时未接收返回值,外层函数也没有返回逻辑,执行完不会输出任何结果
三次按指定参数调用nested_method的返回值分别为:
- 传参
(3,4,0):参数和为7,不满足<7的判断条件,默认返回None(无效值,第一优先级) - 传参
(3,0,1):参数和为4,满足判断条件,返回4(有效值,第二优先级) - 传参
(1,2,0):参数和为3,满足判断条件,返回3(有效值,第三优先级)
需求要求按优先级从高到低依次调用嵌套函数,返回首个获取到的有效结果,最终期望返回值为4。
修复后完整代码
def method(x, y, z): def nested_method(a, b, c): if a + b + c < 7: for i in range(0, 7): if i == a + b + c: return i # 按优先级顺序校验,拿到首个有效值直接返回 first_res = nested_method(3, 4, 0) if first_res is not None: return first_res second_res = nested_method(3, 0, 1) if second_res is not None: return second_res third_res = nested_method(1, 2, 0) if third_res is not None: return third_res
逻辑说明
- 先补全了原代码的语法错误,保证代码可正常执行
- 严格遵循指定的调用优先级顺序,从高到低依次执行嵌套函数
- 每次调用后立刻判断返回值,若为非
None的有效值,外层函数直接返回该结果,终止后续低优先级调用 - 第一优先级调用返回无效值
None,因此继续执行第二优先级调用,拿到有效值4后直接返回,完全符合预期结果 - 注:当前外层
method定义的形参x、y、z未被内部逻辑使用,传入任意值都不影响最终返回结果
内容的提问来源于stack exchange,提问作者Error404
相关产品推荐
相关产品推荐

