一、多返回值
def fun1():
return 1, "a"
x, y = fun1()
print(x, y)
二、函数传参
2.1 位置参数
根据位置,按顺序传参
def fun2(age, name):
print(f"name={name}, age={age}")
fun2(18, "小明")
2.2 关键字参数
通过建=值的形式进行传参
顺序无所谓
def fun3(age, name):
print(f"name={name}, age={age}")
fun3(name = "小明", age = 20)
如果位置参数和关键字参数混用,则位置参数必须在前面
2.3 缺省参数(默认参数)
不传参的时候使用默认值,传参则使用参数
def fun4(age=50, name="小花"):
print(f"name={name}, age={age}")
fun4(18)
特别注意:默认参数必须在最后面
2.4 不定长参数
- 位置不定长(*args),以元组的形式存在
def fun5(*args):
print(args)
# (18, 20, 'a')
fun5(18, 20, "a")
- 关键字不定长(**kwargs),以字典的形式存在
def fun6(**kwargs):
print(kwargs)
# {'name': 'tom', 'age': 20, 'id': 5}
fun6(name="tom", age=20, id=5)
三、将函数作为参数进行传递
def fun7(x, y):
return x + y;
def test(fun):
result = fun(1, 2)
return result
print(test(fun7))
四、匿名函数
函数定义中
- def定义,可以基于名称重复使用函数
- lambda定义,没有名字,只能使用一次
定义格式:lambda 参数1,参数2…: 函数体(只能一行)
fun7 = lambda x, y:x+y
print(fun7(5, 5))
或者下面这种用法,需要传递一个函数作为参数时,不用def定义函数
def test(fun):
result = fun(1, 2)
return result
print(test(lambda x, y:x+y))