在看《笨方法学pyhton》的习题47时,看到如下代码
class Room(object):
def __init__(self,name,description):
self.name=name
self.description=description
self.paths={}
def go(self,direction):
return self.paths.get(direction,None)
def add_paths(self,paths):
self.paths.update(paths)
为什么go函数中有return,而add_paths中没有却没有return? 在Python中什么时候用return,什么时候不用呢?
在python中定义函数的时候,发现既可以用print也可以用return,来输出一个值,那到底return存在的作用是什么?
一、return的作用
return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回。
python中,在调用函数的时候,为了使得函数返回我们想要的值,就需要python中的return来解决此问题。
(1)return语句是python语言中函数返回的一个值,每个函数都应该有一个返回值
(2)return返回值可以是一个数值,一个字符串,一个布尔值,一个列表,或者函数
所以说对python函数的定义中一定要有return返回值才是完整的函数,如果没有定义Python函数返回值,那么得到的结果是None对象。
return 的简要使用说明
(1)返回函数的返回值
(2)终止程序的运行,提前退出
1.程序运行到第一个return即返回(退出def块),不会再运行第二个return。
一个函数体重可以有多个return
def odd(x):
if x%2 != 0:
return x
else:
return None
2. 函数没有return时,程序内部运行,默认return一个None对象,即程序没有返回值。
3. 默认情况下,遇见return函数会返回调用者,但是try,finally情况除外:
def func():
try:
print(666)
return 'ok'
finally:
print(666)
print(func())
结果:
666
666
ok
详情见: python异常处理(try语句含有return时,会不会执行finally)、python 使用try_在python中使用try进行return的警告
4.函数作为返回值返回(其实是个闭包):
def sum1(*args):
def sum2():
x=0
for i in args:
x=x+i
return x
return sum2
sum1(1,2,3)
a=sum1(1,2,3)
print(a())
结果:6=1+2+3
5. 返回一个函数列表
def count():
fs = []
for i in range(1,4):
def f():
return i*i
fs.append(f)
return fs
f1, f2, f3 = count()
print(f1())
print(f2())
print(f3())
输出:
9
9
9
二、return与print的区别
return和print都可以返回值,但具体来说:return用来返回函数的值或者中止函数执行,print用来在标准输出中输出信息。
def test_return(x):
if x > 0:
return x
else:
print x
a = test_return(2)
print a
b = test_return(-3)
print b
结果:
2
-3
None
b的赋值是b = print(-3) 而非b = -3, 所以print b的结果为None
用print会导致变量无法保存,无法进行计算,所以绝大多数情况下要用return返回值,而非用print打印值。
如果没有return,虽然进行的同样的运算,但运算结果会被丢弃,renturn就是用来告诉cpu:别扔,这结果我还要呢!
三、何时用print?
如果你的函数只需打印语句,不需要传递值的时候可以使用print代替return
但绝大多数应用中仍需使用return打印值。
再说回开头的代码
加与不加return的区别是是否被保存
参考链接:
https://blog.csdn.net/liu1123055728/article/details/94454919