一、多值参数
多值参数(可变参数、不定长参数):有的函数不确定参数有几个,在一个普通的参数前面加上一个*,这个参数就变为不定参数。可以接收任意多个位置传参的数据,类型为元组。
def test(name, *args, sex='男'):
print(name, args, sex)
# 传递3个参数
test('张三', 25, sex='女') # 张三 (25,) 女
# 缺省参数要带上关键字
test('张三', 25, '女') # 张三 (25, '女') 男
# 传递七个参数
test('张三', 25, 178, 'IT', 'QA', sex='女') # 张三 (25, 178, 'IT', 'QA') 女
# 多值参数也可以不传递
test('张三') # 张三 () 男
需求:使用函数对[6,7,8]列表和(2,3,4)元组中的数据进行求和。
my_list = [6, 7, 8]
my_tuple = (2, 3, 4)
def my_add(*n):
s = 0
for i in n:
s += i
return s
# 手动分解参数
print(my_add(my_list[0], my_list[1], my_list[2])) # 21
# 自动拆包
print(my_add(*my_list)) # 21
print(my_add(*my_tuple)) # 9
二、函数返回多个数据
函数中返回数据使用的return关键字,除了返回数据值,还可以结束函数的运行,如果想要返回多个数据值,只需要将多个数据值变成容器(一般是元组)返回即可,也可以通过多个变量分别接受多个返回值。
def test(x, y):
z1 = x + y
z2 = x - y
return z1, z2
result = test(3, 1)
print(result) # (4, 2)
a, b = test(4, 2)
print(a, b) # 6 2
三、匿名函数
匿名函数:使用 lambda 关键字定义的函数,匿名函数只能实现简单的功能,只能写一行代码,可以作为函数的参数使用,也可以使用 def 定义的函数作为函数的参数。
需求:对列表中的字典排序
user_list = [
{'name': 'Tom', 'height': 190, 'title': 'TE'},
{'name': 'Ali', 'height': 178, 'title': 'IE'},
{'name': 'Kent', 'height': 186, 'title': 'IE'}
]
print(user_list)
# sort()函数用于对列表进行排序
# key=lambda x: x['height']指定了排序的依据
# reverse=True表示以降序进行排序
user_list.sort(key=lambda x: x['height'], reverse=True)
print(user_list)