六、python函数的多返回值、传参方式以及lambda匿名函数--附代码案例

6.1 函数的多返回值

问题:如下图,写两个return语句,因为return可以退出当前函数,导致return下方的代码不执行,只能执行第一个return,那如何一个函数要有多个返回值?
在这里插入图片描述
解决:按照返回值的顺序,写对应顺序的多个变量接收即可,变量之间用逗号隔开,支持不同类型的数据return。
在这里插入图片描述

6.2 函数的传参方式

函数参数种类:位置参数、关键字参数、缺省参数、不定长参数。

6.2.1 位置参数

定义:调用函数时根据函数定义的参数位置来传递参数。
语法:函数名(实参1,实参2......)
注意:传递的实参和定义的形参的顺序及个数必须一致。

在这里插入图片描述

6.2.2 关键字参数

定义:函数调用时通过“键=值”形式传递参数。
语法:函数名(实参1, 实参2, 形参3 = 实参3, 形参4 = 实参4......),把形参作为字典的key,把实参作为字典的value,以键值对的形式传递参数。
作用:可以让函数更加清晰、容易使用,同时也解除跟位置参数那样的按顺序传递参数的要求。
注意:位置参数和关键字参数混合使用时候,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。

在这里插入图片描述

6.2.3 缺省参数

定义:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,如果为缺省参数传值则修改默认参数值,否则使用这个默认值。
语法:def 函数名(形参1, 形参2, 形参3 = 实参3, 形参4 = 默认值......)
作用:当调用函数时没有传递参数,就会使用默认是用缺省参数对应的值。
注意:不管是函数定义和调用,所有默认参数必须写在最后面,否则会报错。

在这里插入图片描述

6.2.4 不定长参数

定义:不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。
作用:当调用函数时不确定参数个数时,可以使用不定长参数。
不定长参数的类型:①不定长位置参数;②不定长关键字参数。
语法:def 函数名(*args)
说明:*args作为参数,1个星号表示所接收的参数数量可以是无限的,同时参数的内容只需要单个元素即可,最后根据传进参数的位置合并为一个元组。
注意:传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递。

在这里插入图片描述

def user_info(*args):
    print(f"args参数的类型是:{type(args)},内容是:{args}")		# tuple		(1, 2, 3, '小明', '男孩')

user_info(1, 2, 3, '小明', '男孩')

语法:def 函数名(**kwargs)
说明:**kwargs作为参数(全称key-word),两个星号表示所接收的参数数量可以是无限的,同时参数内容必须满足键值对,最后会根据“键=值”组成字典。
注意:参数是“键=值”形式的形式的情况下,所有的“键=值”都会被kwargs接受,同时会根据“键=值”组成字典。

在这里插入图片描述

def user_info(**kwargs):
    print(f"args参数的类型是:{type(kwargs)},内容是:{kwargs}")	# dict	{name:'小王', age:11, gender:'男孩'}

user_info(name='小王', age=11, gender='男孩')

6.3 匿名函数

6.3.1 函数作为参数传递

前面一直使用接受数据类型的数据作为参数传入:①数字;②容器等。
其实函数本身也可以作为参数传入另一个函数内。

def test_func(compute):								# 定义一个函数,接收另一个函数作为传入参数
    result = compute(1, 2)
    print(f"compute参数的类型是:{type(compute)}")	# function
    print(f"计算结果:{result}")						# 3

def compute(x, y):									# 定义一个函数,准备作为参数传入另一个函数
    return x + y

test_func(compute)									# 调用,并传入函数

代码流程:①由result = compute(1, 2)得知compute是函数,再由def testf_func(compute)得知compute作为参数传入test_func函数中。
②再把compute函数定义出来,就可以在test_func函数中传入compute参数,test_func函数根据传入的compute参数实现compute函数里面的计算逻辑。
③compute函数接收2个数字对其进行计算,compute函数作为参数,实质是把计算的逻辑传递作为参数给test_func函数使用。
所以这是一种计算逻辑的传递,不是非数据的传递。

不仅仅是相加,相减、相乘,任何逻辑都可以自行定义并作为函数传入。

传参方式传入的本质数据函数的执行逻辑
数据作为函数参数数据不确定确定
函数作为函数参数函数的执行逻辑确定不确定

6.3.2 lambda匿名函数

函数的定义方式定义类型注意适用范围
def关键字定义带有名称的函数有名称的函数,可以基于名称重复调用重复调用且多行实现逻辑的函数体
lambda关键字定义匿名(无名称)函数无名称的匿名函数,只可临时使用一次临时使用一次且只有一行实现逻辑的函数体

匿名函数定义语法:lambda 传入参数 : 只有一行代码的函数体
说明:①传入参数:匿名函数的形参,如:x, y 表示接收2个形式参数,形参之间用英文逗号分开。
②函数体:函数的执行逻辑,只能写一行,无法写多行代码。

举例:如果将函数作为参数传递的代码修改为lambda形式。
在这里插入图片描述

码字不易,如果大家觉得有用,请高抬贵手给一个赞让文章上推荐让更多的人看到吧,也可以评论提出意见让后面的文章内容越来越生动丰富。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值