写在前面
一、多返回值函数
在特定场景与功能下的函数需要返回多个结果变量的值,可以如下定义:
def multi_return():return'Value1','Value2','Value3'multi_return()## ('Value1', 'Value2', 'Value3')# 返回值也可以用多个变量去接收my_x, my_y, my_z = multi_return()print(my_x)# 变量值会被分别接收## Value1二、参数
我们之前在第八讲中所写的函数都需要参数有一个对应的顺序(即位置参数),如果通过关键字参数以键=值的形式让关键字与参数一一对应,这样即使参数的顺序打乱,也不会相互混淆。
def my_return(value1,value2):print(f"第一个参数{value1}比第二个参数{value2}要小")# 正常使用:my_return(1,2)## 第一个参数1比第二个参数2要小# 倒过来使用就不对了my_return(2,1)## 第一个参数2比第二个参数1要小# 通过关键字参数的使用,可以保证输入顺序打乱的同时结果不乱my_return(value2 =2,value1 =1)## 第一个参数1比第二个参数2要小即函数中的一些参数可以具有预设值,当用户没有给定值时,该参数也有对应值而不会报错
def my_return(value1=1,value2=2,value3=3):print(f"第一个参数为{value1}。第二个参数为{value2}。第三个参数为{value3}")my_return(value1=5) #可以看到我们并没有给函数后面两个参数,但后面两个参数仍可正常输出## 第一个参数为5。第二个参数为2。第三个参数为3需要注意的是,缺省参数必须 在定义时放在最后,否则会有如下报错:
def my_return(value1=1,value2=2,value3):print(f"第一个参数为{value1}。第二个参数为{value2}。第三个参数为{value3}")SyntaxError: unexpected EOF while parsing (
这种情况下传入参数的数量不确定,可以用*来代表这类参数:
# 位置不定长参数:def my_return(*my_arg):print(my_arg)my_return("Biomamba")## ('Biomamba',)my_return("Biomamba_0","Biomamba_1","Biomamba_2") #可以接受任意长度的参数值## ('Biomamba_0', 'Biomamba_1', 'Biomamba_2')mytype =type(my_return("Biomamba_0","Biomamba_1","Biomamba_2"))## ('Biomamba_0', 'Biomamba_1', 'Biomamba_2')print(mytype) # 不定长参数返回的数据格式是元组## <class 'NoneType'># 关键字不定长参数:def my_return(**my_arg):return my_arg# 输入时需要关键字与值一一对应print(my_return(my_arg_1 ="Biomamba_0",my_arg_2 ="Biomamba_1",my_arg_3 ="Biomamba_2"))# 返回的数据类型自然也就是字典## {'my_arg_1': 'Biomamba_0', 'my_arg_2': 'Biomamba_1', 'my_arg_3': 'Biomamba_2'}my_type =type(my_return(my_arg_1 ="Biomamba_0",my_arg_2 ="Biomamba_1",my_arg_3 ="Biomamba_2"))print(my_type)## <class 'dict'>三、匿名函数
# 定义主函数,其中sub_func为一个子函数def my_func(sub_func,value1,value2): my_result = sub_func(value1,value2)return my_result# 定义两个子函数# 求和子函数def my_add(value1,value2): temp_add = value1 + value2return temp_add# 求积子函数def my_mult(value1,value2): temp_mult = value1 * value2return temp_mult# 可以看出我们可以通过主函数分别调用两个子函数实现特定功能print(my_func(sub_func = my_add,value1 =2,value2=5))## 7print(my_func(sub_func = my_mult,value1 =2,value2=5))## 10之前我们对函数的介绍均通过def进行定义,这类函数具有名称,可通过名称重复性使用。而lambda关键字可以定义没有名称的函数,匿名函数只可临时使用一次,定义时可省略return。定义形式为:lambda 传入参数: 函数体(单行代码)
# 定义示例:lambda value1, value2: value1+value2# 只可以写一行## <function <lambda> at 0x000001AFE8C35400># 将其应用于我们上面写的myfunc()中def my_func(sub_func,value1,value2): my_result = sub_func(value1,value2)return my_resultmy_func(sub_func =lambda value1, value2: value1+value2, value1 =2, value2 =5)#可以看到my_func成功执行了匿名函数的功能## 7往期回顾

如何联系我们


已有生信基地联系方式的同学无需重复添加

