在刚开始学的时候,有些同学可能会疑惑return返回值可以给我们带来什么,我们需要函数反馈它的处理结果的话,直接使用print()打印出来不就好了吗?
在实际开发项目中,print()只是我们用来尝试打印结果,调试代码用的,它是可以输出结果,但是只能输出在控制台给我们看。如果你想在其他函数中使用这个函数的处理结果,那print()帮不到你。
这时候就需要用到return了。
举个例子,我有一个函数A,只要给它传数据,它就能对数据进行清洗,过滤掉无用数据,但我需要它把处理后的数据给到下一个函数继续处理,那么这时候就需要用到返回值了,让它处理后return出来。
2、返回值的作用 2.1、反馈结果:return可以将函数运行的结果反馈给函数,在外部调用函数的时候,使用一个变量接收即可将函数运行的结果输出;但如果函数内部没有返回值,也没有打印的动作,在外部调用该函数的时候,你在控制台上看不到任何输出,也无法获取函数运行的结果(无返回值将默认返回None,也就是隐性返回值)
这是一个简单的加法计算的例子:
先定义了add函数,给它传2个参数,就能计算2个参数的和。在函数外部,你使用print(add(1, 2)),它可以把计算的结果打印出来,但如果你想要在另一个函数中调用add函数的处理结果进行判断,需要先用一个变量去接收它的处理结果:ret = add(1, 2)
def add(x,y):
a = x + y
return a
# 直接将add计算的结果打印出来
print(add(1, 2))
# 直接拿到add计算的结果,进行其他运算
print(100 + add(1, 2))
# 在函数外先用变量接收处理结果,方便后面调用这个结果。
ret = add(1, 2)
if ret == 3:
print('两数之和小于3')
2.2、流程控制:
return用在函数中,不仅可以将函数执行的结果返回,还能控制这个函数的结束。不管你函数下方还有没有代码,只要它一步步符合条件,走到return这一行,整个函数就结束了。
看下方的代码,猜测一下控制台会不会输出:“第二次打印”。
def add(x,y):
if x == 1:
a = x + y
print('第一次打印')
return a
print('第二次打印')
add(1, 2)
答案是不会,我们传的参数是x=1,符合判断条件,流程已经走到return这边了,整个函数就结束了。
return和break很相似,都能用来控制流程的结束。
但它们有2点区别:
1、return可以有返回值也可以无返回值。break无返回值;
2、return通常是用在函数中的,如果你想在循环内使用return控制循环结束,必须保证它最外层是一个函数,否则执行的结果就会报一个语法错误。而break则是要求你必须用在循环中,如果它不是循环,只是一个函数,那也不能使用break。
4.1、return可以没有返回值,当它没有返回值的时候,其实就是返回了一个None。
4.2、可以只有1个返回值;
4.3、可以有多个返回值。
如果有多个返回值的话,默认是按照元组的形式返回的。如果你只用一个变量去接收多个返回值,收到的结果就是一个元组。如果你想把一一接收每个返回值,那就使用多个变量去接收。
例如:
def add(x, y):
x += 1
y += 2
return x,y
# 直接打印出来是一个元组
print(add(1, 2))
# 使用2个变量去接收,可以分别接收到返回的2个值
a, b = add(1, 2)
print(a, b)
但你也可以让它按照列表的形式返回,并且用列表的索引取值,取出每个返回值。
def add(x, y):
x += 1
y += 2
return [x,y]
# 直接打印出来是一个元组
print(add(1, 2))
# 接收列表的时候,取出返回值可以使用列表的索引取值
a = add(1, 2)[0]
b = add(1, 2)[1]
print(a, b)