Python函数何时需要使用return语句?无返回值的适用场景有哪些?
Python return语句使用规则说明
1. 函数返回值的基础逻辑
Python不会强制要求所有函数必须写return语句:
- 未显式写return、或者写了return但后面没跟值的函数,运行结束后默认返回
None - 只要你调用函数的目的不是获取它的输出结果,就完全可以不用写return,比如你举的滑动窗口例子里
eat、spit函数的作用是修改外部的双端队列d,属于副作用操作,不需要返回值,所以没写return也能正常运行。
你之前写的one_counter()返回None的问题,本质是你调用这个函数的目的是要拿它的计算结果,但是没写return把结果抛出来,自然拿到的就是默认的None。
2. 需要写return的场景
只要满足以下任意一种情况,就需要加return:
- 你需要拿到函数执行后的计算结果,赋值给其他变量、或者作为其他函数的入参使用
- 需要提前终止函数运行:比如函数执行到某一步满足条件就不需要跑后面的逻辑了,可以直接写
return(不需要返回值的时候也可以这么用,用来提前退出) - 类方法中需要给外部返回实例属性、计算结果的场景,也需要加return
注意:生成器函数用
yield返回值的场景,不需要额外加return(Python3.3+允许生成器加return但属于特殊用法,常规场景不需要)
3. 不需要写return的场景
满足以下所有条件时,可以不用写return:
- 函数的作用只是执行副作用操作:比如修改传入的可变对象(列表、字典、类实例属性、你例子里的双端队列)、打印日志、写文件、发送网络请求等,不需要给调用方返回结果
- 不需要提前终止函数运行
- 类内部的工具方法只是修改实例属性、没有返回值需求的,也不需要写return
4. 类内部函数调用的补充说明
类里面的方法要不要加return,和普通函数的判断逻辑完全一致:
- 如果调用这个方法是要拿它的结果做后续计算,就加return
- 如果只是修改实例的属性、执行打印/存文件这类操作,就不需要加return
举个简单例子:
class Counter: def __init__(self): self.count = 0 # 只修改属性,不需要返回值,不用加return def add(self, num): self.count += num # 需要返回计算结果,要加return def get_double_count(self): return self.count * 2
内容的提问来源于stack exchange,提问作者if fhhf
相关产品推荐
相关产品推荐

