前几篇在讲函数的参数时,我们有些函数代码是有返回值,即通过return 返回值,有些是没有返回值。
一、函数返回值 return
def test_num(a, b):
sum_num = a + b
return sum_num
num1 = test_num(2, 3)
print(num1)
运行结果为:
5
上面的例子是传入两个实参2和3,分配(赋值)给形参a和b,然后函数计算 a+b结果,赋值给sum_num,然后通过return 返回sum_num值,使函数调用时, sum1获得这个返回值。
一个返回值是用 num1一个变量来赋值(num1=test_num(2,3))
我们改进一下代码,通过函数返回两个值。
def test_num(a, b):
sum_num = a + b
minus_num = b - a
return sum_num , minus_num
num1,num2 = test_num(2, 3)
print('返回的num1值是:',num1)
print('返回的num2值是:',num2)
运行结果:
返回的sum1值是: 5
返回的sum2值是: 1
由上述代码可以看出,返回两个或多个值时,只需要用相应个数的变量来接收返回值即可,它们是按位置一 一对应的。
我们再来改一下代码,返回三个值
def test_num(a, b):
sum_num = a + b
minus_num = b - a
nums = b*a
return sum_num , minus_num , nums
num1,num2,num3= test_num(2, 3)
print('返回的num1值是:',num1)
print('返回的num2值是:',num2)
print('返回的num3值是:', num3)
运行结果:
返回的num1值是: 5
返回的num2值是: 1
返回的num3值是: 6
我们调用函数时,如果返回三个值,只用两个变量接受,会出现什么情况呢?
def test_num(a, b):
sum_num = a + b
minus_num = b - a
nums = b*a
return sum_num , minus_num , nums
num1,num2= test_num(2, 3)
运行错误:
num1,num2= test_num(2, 3)
ValueError: too many values to unpack (expected 2)
返回值解包错误。
二、匿名函数 lambda表达式
Python为我们提供了一个简单的定义函数的方法,用lambda表达式(匿名函数)来表示内部公包含1行表达式的函数。如果一个函数的函数体仅有1行表达式,则该函数就可以用lambda表达式来代替。
lambda语法:
- 冒号前是参数,可以有多个,用逗号隔开
- 冒号右边的是表达式及返回值
- 如果没有参数,则lambda冒号前面就没有。
lambda 参数:操作(参数)
lambda arg1,arg2,arg3...argN :expression
add = lambda x,y:x+y
print(add(3,5))
运行结果
8
这个lambda 表达式是不是跟我们下面的函数功能一样的
def add(x,y):
sum = x +y
return sum
print(add(3,5))
是的,lambda表达式就是使一行代码来替换def 定义的函数,所使用的三行代码。
lambda表达式,我们这里了解一下,不作详细解说
结束语
这篇内容我们讲了函数的返回值return和lambda表达式(匿名函数)。