Python 中的函数,从返回值的角度可以分为 2 种:一种是 “没有返回值的函数”,另一种是 “有返回值的函数”。不管是哪一种函数,都必须使用 def 关键字来定义。其中,def 是 “define(定义)” 的缩写。
定义没有返回值的函数
在 Python 中,没有返回值的函数,指的是函数执行完就算了,不会返回任何值。
语法:
def 函数名(参数1 , 参数2 , ... , 参数n):
……说明:
在 Python 中,我们也是使用 “缩进” 的方式来表示哪一个代码块属于函数。函数一定要用 def 关键字来定义。准确来说,函数其实就是一个可重复使用的、具有特定功能的语句块。
函数跟 “变量” 是非常相似的,变量需要取一个变量名,而函数也需要取一个函数名。在定义函数的时候,函数名不要乱取,尽量取有意义的英文名,让人一看就知道这个函数是干什么的。
函数的参数是可以省略的(即不写),当然也可以是 1 个、2 个或 n 个。如果有多个参数,则参数之间用英文逗号(,)隔开。此外,函数参数的个数一般取决于开发的实际需要。
示例 1:定义没有返回值的函数
# 定义函数
def get_sum(a, b):
result = a + b
print(result)
# 调用函数
get_sum(10, 20)运行结果如下。
30分析:
在上面示例中,我们使用 def 关键字定义了一个名为 “get_sum” 的函数,它用于计算任意两个数之和。其中函数名是可以随便取的,不过一般取能够表示函数功能的英文名。
def get_sum(a,b) 是函数的定义部分,这里的 a、b 是参数,也叫 “形参”(即形式参数),如下图所示。参数的名字也是随便取的。你可能就会问了:“怎么判断需要多少个参数呢?” 其实这很简单,由于这个函数用于计算任何两个数之和,那肯定就是需要两个参数了。


get_sum(10, 20) 是函数的调用,这里的 10、20 也是参数,叫做 “实参”(即实际参数),如上图所示。实际上,函数调用是对应于函数定义的,像 get_sum(10, 20) 就刚好对应于 get_sum(a, b),其中 10 对应 a,20 对应 b,因此 get_sum(10, 20) 等价于下面代码。
def get_sum(10, 20):
result = 10 + 20
print(result)也就是说,函数的调用,其实就是把 “实参”(即 10 和 20)传递给 “形参”(即 a 和 b),然后把函数执行一遍,就这么简单。在这个例子中,你可以改变函数调用的参数,也就是把 10 和 20 换成其他的数,然后看看运行结果如何。
此外还需要说明一点:函数只有定义部分,却没有调用部分,这是没有任何意义的。如果函数只定义而不调用,那么 Python 就会自动忽略这个函数,也就是不会执行这个函数。函数只有调用的时候,才会被执行。
定义有返回值的函数
在 Python 中,有返回值的函数,指的是函数执行完之后,会返回一个值,然后这个值可以供我们使用。
语法:
def 函数名(参数1 , 参数2 , ... , 参数n):
……
return 返回值说明:
“有返回值的函数” 相对 “没有返回值的函数” 来说,只是多了一个 return 语句罢了。return 语句就是用来返回一个结果的。
示例 2:定义有返回值的函数
# 定义函数
def get_sum(a, b):
result = a + b
return result
# 调用函数
result = get_sum(10, 20) + 100
print(result)运行结果如下。
130分析:
这里定义了一个名为 “get_sum” 的函数,这个函数跟之前那个例子的函数功能是一样的,也是用来计算任何两个数之和。唯一不同的是,get_sum() 函数会返回相加的结果。
为什么要返回相加的结果呢?因为这个相加结果在后面要用到啊!现在小伙伴们应该知道什么时候该用 return,什么时候不用 return 了吧?一般情况下,如果后面的程序需要用到函数的运行结果,就应该使用 return 返回。如果后面的程序不需要用到函数的运算结果,就不需要使用 return 返回。
示例 3:函数返回多个值
def compute(width, height):
girth = (width + height) * 2
area = width * height
return (girth, area)
result = compute(10, 20)
print(f'girth: {result[0]}')
print(f'area: {result[1]}')运行结果如下。
girth: 60
area: 200分析:
函数的返回值只能是一个,如果想要返回多个值,可以使用变通的方式,也就是返回一个元组。注意,此时函数返回值其实还是一个,只不过该值是一个元组而已。
说明: 对于没有返回值的函数,它本质上是使用 return 语句返回一个 None 值,也就是 return None。
