多个返回值的写法
1
2
3
4
5
|
def test():
return 1,2
a,b= test()
print(a)
print(b)
|
按照返回值的顺序,写对应的多个变量接收即可
变量之间用逗号隔开
支持不同类型的数据return
函数的多种参数使用形式
位置参数
调用时根据函数定义的参数位置来传递参数
1
2
3
|
def user_info(name,age,gender):
print(f'您的姓名是{name},年龄是{age},性别是{gender}') # 注意此处print内有f,意为在字符串内插入表达式
user_info('Retr0',18,'男')
|
关键字参数
调用时通过“键=值”形式传递参数
1
2
3
4
5
6
7
8
|
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='男')
|
注意:函数调用时,如果有位置参数时位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
缺省参数
也叫默认参数,用于定义函数,为参数提供默认值,调用函数时刻不传该默认参数的值
注意:所有位置参数必须出现在默认参数前,包括函数定义和调用
1
2
3
4
|
def user_info(name,age,gender='男'):
print(f'您的姓名是{name},年龄是{age},性别是{gender}')
user_info('Retr0',20)
user_info('小红',20,'女')
|
函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值
不定长参数
也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
类型包括:
位置传递
1
2
3
4
|
def test(*args): # *标记表示args这个形式参数接收的参数数量无限,且采用位置传递
print(args)
test('Retr0')
test('Retr0','18')
|
传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组,args是元组类型
关键字参数
1
2
3
|
def test(**kwargs): # **标记表示kwargs这个形式参数接收的参数数量无限,且采用关键字传递
print(kwargs)
test(name='Retr0',age=18,gender='男')
|
参数是“键=值”的形式的情况下,所有的“键=值”都会被kwargs接受,同时根据“键=值”组成字典
函数作为参数传递
示例:
1
2
3
4
5
6
|
def test(compute):
result = compute(1,2)
print(result)
def compute(x,y):
return x + y
test(compute)
|
此处函数compute作为参数传入了test函数中使用
实质上数据由test函数内部传入的compute函数进行计算
所以这是一种**计算逻辑的传递,而非数据的传递,而任何逻辑都可以自行定义并作为函数传入**
lambda匿名函数
众所周知,
def 关键字,可以定义带有名称的函数
而 lambda关键字,可以定义匿名函数(无名称)
有名称的函数,可以基于名称重复使用
无名称的匿名函数,只能临时使用一次
匿名函数定义语法
lambda 传入参数: 函数体(一行代码)
- lambda 是关键字,表示定义匿名函数
- 传入参数表示匿名函数的形式参数,如:x,y表示接收2个形式参数
- 函数体,就是函数的执行逻辑,要注意:只能写一行,无法写多行代码
例如:
1
2
3
4
|
def test(compute):
result = compute(1,2)
print(result)
test(lambda x,y:x+y)
|