如果在一个函数中有两个return返回值,那么程序会如何执行?
def temple():
return 1
return 2
我们应该明确一个函数到哪里就会结束,一旦函数代码块执行到return,那么就会直接完成这个函数,下方的代码并不会得到有效的执行,所以如上的代码只会返回1,并不会受到下方代码的影响
一.函数多返回值
那么如果一个函数需要有多个返回值,该怎么办?
1.按照返回值的顺序写出对应顺序的多个变量对数据进行接收
2.变量之间用逗号隔开
3.支持不同类型的数据用以返回
def temple()
return 1, 2
二.函数的多种传参方式
1.函数的参数种类:
根据使用方式上的不同,函数中有四种常见参数的使用方式,分别为:位置参数,关键字参数,缺省参数,不定长参数
(1).位置参数:
调用函数时根据函数定义的参数位置来传递参数
def student(name, age, score):
注意:传递的参数和定义的参数的顺序以及个数必须一致
(2).关键字参数:
函数调用时通过“键 = 值”的形式传递参数
作用:可以让函数更加清晰,容易使用,同时也清除了参数的顺序要求
def student(name, age, score)
print({name},{age},{score})
student(name="A",age=18,score=100)
注意:函数调用时,如果有位置参数的话,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
(3).缺省参数:
也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可以不传该默认参数的值(所有位置参数必须出现在默认参数前,包括函数定义和调用)
作用:当调用函数时没有传递参数,就会使用默认是缺省参数对应的值
def student(name, age, score=100)
print({name},{age},{score})
student(name="A",age=18)
student(name="B",age=19,score=90)
注意:函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值
(4).不定长参数:
也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
作用:当调用函数时不确定参数个数时,可以使用不定长参数
不定长参数的类型:位置传递和关键字传递
位置传递:
使用了*的关键字,表示形式参数会接收所有的传入参数,并将传入参数整合为一个元组
def temple(*elements):
print(elements)
temple("A",18,100)
关键字传递:
使用了**的关键字,表示形式参数会接收所有的传入参数,同时数量必须满足key=value的键值对形式,最后所有的传入参数都会被整合为一个字典
def student(**elements):
print(elements)
student(name="A",age=18,score=100)
三.匿名函数
1.函数作为参数传递
在之前我们学习函数时一直都是接收外部数据作为参数传入,但是其实我们学习的函数本身,也可以作为参数传入另一个函数内
def mul(x, y)
return x * y
def test(mul):
result = mul(1,2)
print(result)
在上方的示例中,mul函数就作为一个参数传入到了test函数中
但是在这种应用场景中,传递的其实是计算逻辑,而非数据,真正传递的其实是mul函数中对数字乘的计算逻辑,与在函数中调用函数有异曲同工之妙
2.lambda匿名函数
在函数的定义中可以通过del关键字定义带有名称的函数,而使用lambda关键字可以定义匿名的函数(无名称),两者的区别为:有名称的函数可以基于名称重复使用,而无名称的匿名函数只可临时使用一次
匿名函数的定义语法:
lambda 传入参数:函数体(一行代码)
(1).lambda是关键字,表示接下来定义的是匿名函数
(2).传入参数表示匿名函数的形式参数,如x,y表示接收两个形式参数
(3).函数体就是函数的执行逻辑(只能写一行代码)
lambda x, y:x * y #定义了一个计算两数相乘的函数
注意:使用def和使用lambda所定义的函数功能完全一致,只是lambda关键字定义的函数是匿名的,无法二次使用