一、函数参数分类
1 位置参数
位置参数:
调用函数时根据函数定义的参数位置来传递参数。
示例:
def user_info(name, age, gender):
print(f"您的名字是{name},年龄是:{age},性别是:{gender}")
user_info("tom", 20, "m")
"注意:传递的参数和定义的参数的顺序及个数必须一致"
2 关键字参数
关键字参数:
函数调用时通过“键=值”形式传递参数。
作用:
可以让函数更加清晰、容易使用,同时也清除了参数的顺序要求。
示例:
def user_info(name, age, gender):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
# 关键字传参
user_info(name="小明", age=20, gender="m")
# 可以不按照固定顺序
user_info(age=20, name="小明", gender="m")
# 可以和位置参数混用
user_info("小明", age=20, gender="m")
"注意:函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。"
3 缺省参数
缺省参数:
缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可以不传该默认参数的值。
作用:
当调用函数式没有传递参数,就会使用默认是用缺省参数对应的值。
示例:
def user_info(name, age, gender="m"):
print(f"您的名字是:{name},年龄是:{age},性别是:{gender}")
user_info("小明", 20)
"注意:
所有位置参数必须在默认参数前面,包括函数定义和调用。
函数调用时,如果为缺省参数传值,则会使用传入的该值,否则直接使用默认值。"
4 不定长参数
不定长参数:
不定长参数也称为可变参数,用于不确定调用的时候会传递多少个参数的场景。
作用:
当调用函数时不确定函数参数的个数时,可以使用不定长参数。
不定长参数的类型:
位置传递:
语法:
def user_info(*args):
print(args)
"注意:该方式传进的所有参数都会给args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递。"
关键字传递:
语法:
def user_info(**kwargs):
print(kwargs)
"注意:该方式传进的参数是“键=值”的形式,所有的“键=值”都会被kwargs接收,同时会根据“键=值”组成字典"
二、匿名函数
1 函数作为参数
示例:
def test_func(compute):
result = compute(1, 2)
print(result)
def compute(x, y):
result x + y
2 匿名函数
定义:
lambda关键字可以定义匿名函数,匿名函数就是无名称的函数,有名称的函数可以基于名称重复多次使用,而无名称的函数只可以临时的使用一次。
语法:
lambda 传入参数: 函数体(一行代码)
"注意:只能写一行代码。"
示例:
def test_func(compute):
result = compute(1, 2)
print(result)
test_func(lambda x, y: x + y)