文章目录
1. 函数的多返回值
def test_return():
return 123, "hello", True
x, y, z = test_return()
print(x)
print(y)
print(z)
输出结果:
123
hello
True
按照返回值,写对应的多个变量接收即可。
支持同时返回不同类型的数据。
2. 函数的多种传参方式
2.1 位置参数
位置参数:调用函数时根据参数位置来传递参数。
注意:实参与形参的顺序及个数必须一致。
def user_info(name, age, gender):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
user_info('TOM', 20,'男')
2.2 关键字参数
关键字参数:函数调用时通过 “键=值” 的形式传递参数。
作用:可以让函数更加清晰、容易使用,同时也没有参数的顺序需求。
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
#关键字传参
user_info(name="小明",age=20,gender="男")
#可以不按照固定顺序
user_info(age=20,gender="男",name="小明")
#可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_info("小明",age=20,gender="男")
注意:函数调用时,如果有位置参数,位置参数必须在关键字参数的前面,且要与形参对应,但关键字参数之间不存在先后顺序。
2.3 不定长参数
不定长参数:不定长参数也叫可变参数,用于不确定传参个数(不传参也可以)的场景。不定长参数的类型有:
① 位置传递
传进的所有参数都会被 args 变量收集,args 会根据顺序将传进的参数合并为一个元组(tuple)。
def user_info(*args):
print(args)
user_info('TOM')
user_info('TOM', 18)
输出结果:
('TOM',)
('TOM', 18)
② 关键字传递
参数是 “键=值” 的形式,所有的 “键=值” 都会被 kwargs 接受,组成字典。(kw:key-word)
def user_info(**kwargs):
print(kwargs)
user_info(name='TOM', age=18, id=110)
输出结果:
{'name': 'TOM', 'age': 18, 'id': 110}
2.4 默认参数(缺省参数)
默认参数:默认参数也叫缺省参数。如果传入该参数,就使用传入的参数;如果不传入,就使用默认值。
注意:默认参数必须在最后。
def user_info(name, age, gender='男'):
print(f'您的名字是{name},年龄是{age},性别是{gender}')
user_info('TOM', 20)
user_info('Rose', 18, '女')
输出结果:
您的名字是TOM,年龄是20,性别是男
您的名字是Rose,年龄是18,性别是女
错误示例:
3. 匿名函数
3.1 函数作为参数传递
在前面,函数都是接收数据作为参数传入,如:数字、字符串、字典、列表、元组等。
其实,函数本身,也可以作为参数传入另一个函数内。
def test_func(compute):
result = compute(1, 2)
print(type(compute))
print(result)
def compute(x,y):
return x + y
test_func(compute)
输出结果:
<class 'function'>
3
这是计算逻辑的传递,而非数据的传递。
3.2 lambda 匿名函数
函数的定义中,def 关键字,可以定义带有名称的函数;lambda 关键字,可以定义匿名函数。
有名称的函数,可以基于名称重复使用;无名称的匿名函数,只可临时使用一次。
匿名函数定义语法:
lambda 传入参数:函数体
lambda:关键字,表示定义匿名函数。
传入参数:匿名函数的形参,如:x, y表示接收 2 个形参。
函数体:函数的执行逻辑,只能写一行代码。如果代码超过一行,还是要用 def 定义带名函数。
def test_func(compute):
result = compute(1, 2)
print(result)
def compute(x,y):
return x + y
test_func(compute)#结果:3
(2) 通过 lambda 关键字,传入 lambda 匿名函数:
def test_func(compute):
result = compute(1, 2)
print(result)
#lambda函数直接将x+y的结果return
test_func(lambda x, y: x + y)#结果:3
使用 def 和 lambda,定义的函数功能完全一致,只是 lambda 关键字定义的函数是匿名的,无法二次使用。
若用一个变量接收了 lambda 函数,就可以多次使用该函数。
func = lambda x, y: x + y #func相当于函数名
print(func(1,3))#输出4
print(func(1,3))#输出4
print(func(1,3))#输出4
原文地址:https://www.jb51.cc/wenti/3281802.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。