函数的多返回值
# 两个return测试,只输出第一个return,原因是return可以退出当前函数,导致return下方的代码不执行
def test_return():
return 1
return 2
print(test_return())
1
# 函数多返回值写法
def test_return():
return 1, "hello", True
x, y, z = test_return()
print(x)
print(y)
print(z)
1
hello
True
函数的位置参数
位置参数:调用函数时根据函数定义的参数位置来传递参数
注意:传递的参数和定义的参数的顺序及个数必须一致
def user_into(name, age, gender):
print(f"用户信息名字:{name},年龄是:{age},性别是:{gender}")
user_into("tang", 18, "男")
用户信息名字:tang,年龄是:18,性别是:男
关键字参数
关键字参数:函数调用时通过"键=值"形式传递参数
作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求
注意:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
def user_into(name, age, gender):
print(f"用户信息名字:{name},年龄是:{age},性别是:{gender}")
# 关键字传参
user_into(name="tang", age=18, gender="男")
# 可以不按照固定顺序
user_into(age=18, gender="男", name="tang")
# 可以和位置参数混用,位置参数必须在前,且匹配参数顺序
user_into("tang", gender="男", age=18)
用户信息名字:tang,年龄是:18,性别是:男
用户信息名字:tang,年龄是:18,性别是:男
用户信息名字:tang,年龄是:18,性别是:男
缺省参数
- 缺省参数(默认值) 缺省参数必须放到最后面
def user_into(name, age, gender="男"):
print(f"用户信息名字:{name},年龄是:{age},性别是:{gender}")
user_into(name="tang", age=18)
user_into("tang", age=18)
user_into("tt", age=18, gender="女")
用户信息名字:tang,年龄是:18,性别是:男
用户信息名字:tang,年龄是:18,性别是:男
用户信息名字:tt,年龄是:18,性别是:女
不定长参数
不定长参数:不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
作用:当调用函数时不确定参数个数时,可以使用不定长参数
不定长参数的类型:
- 位置传递
- 关键字传递
- 位置传递
注意:传进的所有参数都会被变量收集,它会根据传进参数的位置合并为一个元组(tuple),变量是元组类型,这就是位置传递
def user_into(*args):
print(args)
user_into("tang", 18)
user_into("tang", 18, "男")
('tang', 18)
('tang', 18, '男')
- 关键字传递
注意:参数是"键=值"形式的情况下,所有的"键=值"都会被变量接受,同时会根据"键=值"组成字典
def user_into(**kwargs):
print(kwargs)
user_into(name="tang", age=18, gender="男")
{'name': 'tang', 'age': 18, 'gender': '男'}
函数作为参数传递
函数本身也可以作为参数传入另一个函数
def test_func(compute):
result = compute(1, 2)
print(result)
def compute(x, y):
return x + y
test_func(compute)
3
函数compute,作为参数,传入了test_func函数中使用
- test_func需要一个函数作为参数传入,这个函数需要接收2个数字进行计算,计算逻辑由这个被传入函数决定
- compute函数接收2个数字对其进行计算,compute函数作为参数,传递给了test_func函数使用
- 最终,在test_func函数内部,由传入的compute函数,完成了对数字的计算操作
所以,这是一种计算逻辑的传递,而非数据的传递,不仅仅是加、减、乘、除等任何逻辑都可以自行定义并作为函数传入
lambda 匿名函数
函数定义中:
- def 关键字,可以定义带有名称的函数
- lambda 关键字,可以定义匿名函数(无名称)
有名称的函数,可以基于名称重复使用
无名称的匿名函数,只可临时使用一次
匿名函数定义语法:
lambda 传入参数:函数体(一行代码)
- lambda 是关键字,表示定义匿名函数
- 传入参数表示匿名函数的形式参数,如:x,y表示接收2个形式参数
- 函数体,就是函数的执行逻辑,要注意:只能写一行代码,无法写多行代码
def test_func(compute):
result = compute(1, 2)
print(result)
test_func(lambda x, y : x + y)
3