第三节 返回值
凡是运算,皆有返回值.函数的本质是"一个运算"的抽象,因此函数本身必定有返回值
Python函数的返回值比较灵活,前面我们使用return
返回结果的函数,基本都是单一返回值,本节我们讨论一下经常可以看到的"无返回值"和"多返回值"的函数定义.
无返回值函数
首先,我们需要明确一点,在Python中并不存在"无返回值参数",因为凡是运算,皆有返回值,只是有些函数看起来没有返回值罢了
在某些情况下,有的函数只是为了处理某个过程,比如输出Hello World
def say_hello(){
print("Hello World")
}
这样的函数并没有使用return
显式的返回一个结果,我们可以把它看做"无返回值"的函数
需要注意,打印的结果是输出而不是返回值
我们尝试打印函数的返回值:
def say_hello():
print("Hello World")
say_hello()
# "Hello World"
print(say_hello())
# "Hello World"
# None
def say_hello():
print("Hello World")
return "haha"
say_hello()
# "Hello World"
print(say_hello())
# "Hello World"
# "haha"
由上述两例对比,可知,如果函数不使用return
显式的返回结果,函数的返回值为None
同样,我们也可以显式的返回None
,或者只写一个return
,他们的效果是一样的
def say_hello():
print("Hello World")
return None
say_hello()
# "Hello World"
print(say_hello())
# "Hello World"
# None
def say_hello():
print("Hello World")
return
say_hello()
# "Hello World"
print(say_hello())
# "Hello World"
# None
say_hello
函数返回None
显然是多此一举.但是有时使用return
或者return None
是很有必要的
def sum(*numbers,multiple=1):
"""定义可变参数并验证"""
if len(numbsers) == 0:
return
total = 0.0
for number in numbers:
total += number
return total*multiple
print(sum(30.0,80.0))
# 110.0
print(sum(multiple=2))
# None
如果numbers
中数据是空的,后面的求和计算也没有什么意义了.return
或者return None
在此处的作用是终止函数继续执行.
多返回值函数
同"无返回值"函数一样,在Python中,也不存在"多返回值函数",我们无论定义的返回值是什么,return
只能返回单值,但值可以存在很多元素.
def showlist():
return [1,3,5]
print(type(showlist()))
# <class 'list'>
print(showlist())
# [1, 3, 5]
该例看起来返回了三个值,其实只返回了一个列表
def showlist():
return 2,4,6
print(type(showlist()))
# <class 'tuple'>
print(showlist())
# (2, 4, 6)
上例看起来更像是返回了三个值,但是其实Python在返回时,将值封装成了元组
小结
- 凡是运算皆有返回值
- 没有显式返回值的函数返回值为
None
-
return
和return None
可以终止函数继续向下执行 - 无论定返回什么类型,
return
只能返回单值,但值可以存在多个元素