类内或嵌套函数互相调用时什么时候要用return,什么时候直接调用?
嵌套/同类函数调用时return的使用规则
核心判断逻辑非常简单,只看你调用函数的目的:
- 如果你调用函数是为了获取它的返回值,并且需要把这个值作为当前函数的执行结果返回给上层调用者,就必须加
return - 如果你调用函数只是为了执行它的内部副作用逻辑(比如修改外部变量、打印输出、写入文件等),不需要把它的返回值作为当前函数的结果向外传递,直接调用即可
第一段滑动窗口代码无需return调用的原因
你给出的maxSlidingWindow代码里,eat和spit两个嵌套函数本身没有返回值,唯一作用就是修改外层定义的双端队列d。在slide中调用它们只是为了触发队列修改的逻辑,不需要获取它们的返回值,更不需要把它们的返回值作为slide的结果返回,所以直接调用即可,不需要加return。
第二段二进制字符串代码必须加return调用的原因
findDifferentBinaryString里的one_counter函数的作用是返回一个不存在于nums中的二进制字符串。当全0字符串已经存在于nums中时,符合要求的结果是由permutation_poss计算得到的,你需要把这个结果作为one_counter的执行结果返回给上层调用者,所以必须写return permutation_poss("".join(res))。如果省略return,permutation_poss的返回结果会被直接丢弃,one_counter会默认返回None,自然得不到预期的执行结果。
补充说明
哪怕你需要用到被调用函数的返回值,但只是在当前函数内部做计算使用,不需要向外传递,也不用加return,比如local_val = get_val(param)这种场景,只需要把返回值存入本地变量即可,不需要写return。只有你要把被调用函数的返回值直接作为当前函数的输出返回时,才需要加return。
内容的提问来源于stack exchange,提问作者if fhhf
相关产品推荐
相关产品推荐

