函数的返回值:
- 如果函数有多个return的话,只有第一个生效,之后的是不会生效的
def num_fun():
return 1
return 2
num = num_fun()
print(num) # 1 只会接收到1 ,2不会接收到
- 如果需要返回多个元素,可以使用‘,’分开,使用对应数量的变量按顺序接收。
def nums_fun():
return 1, 2
# 如果有多个返回值,等号前边可以用多个变量接收,按顺序接收到对应的返回值
x, y = nums_fun()
print(x, y)
函数的参数类型
- 位置参数:
def people(name, age, hobby):
print(f"姓名是:{name}, 年龄是:{age}, 爱好是:{hobby}")
people("王拿铁", 18, "敲代码") # 传入的三个参数会和函数的对应参数根据位置一一对应
- 关键字参数:
# 调用函数传递参数的时候,使用关键字传去参数。好处:可以不按顺序,更加明了。
people(age=18, name="王拿铁", hobby="敲代码")
# 也可以混合传参,但注意:位置传参必须在关键字传参之前
people("王拿铁", age=18, hobby="敲代码") # 正确的
# people(age=18, "王拿铁", hobby="敲代码") # 错误演示
- 不定长参数:
*args
# 不定长参数,也叫做可变参数,用于不确定调用的时候会传几个参数(不传参数也可以)的情况。
# 使用*args代替参数,所有的参数都会被args收集,args会把所有的参数放到一个元组中,
# 所以它是一个元组类型,也叫位置传递。
def people(*args):
print(args)
people("王拿铁", 18) # ('王拿铁', 18)
people("王拿铁") # ('王拿铁',)
people(("王拿铁", 18)) # (('王拿铁', 18),)
people() # ()
**kwargs
# 关键字传递 使用**kwargs代替参数,调用函数时,传递的参数必须是使用键值对进行传递。
def people(**kwargs):
print(kwargs)
# people("王拿铁", 18) # 错误演示
people(name="王拿铁", age=18, hobby="敲代码") # {'name': '王拿铁', 'age': 18, 'hobby': '敲代码'}
people(name={"王拿铁", 18}) # {'name': {18, '王拿铁'}}
people() # {}
- 缺省参数:
# 缺省参数,函数可以给参数加上一个默认值,不传该参数的话就使用默认值,否则就使用传递的参数修改默认值
def people(name, age, hobby="敲代码"):
print(f"姓名是:{name}, 年龄是:{age}, 爱好是:{hobby}")
people("王拿铁", 18, "打游戏") # 姓名是:王拿铁, 年龄是:18, 爱好是:打游戏
people("王拿铁", 18) # 姓名是:王拿铁, 年龄是:18, 爱好是:敲代码
- 将函数作为参数传递:
def add_fun(fun):
count = fun(1, 2)
return count
def sum(x, y):
return x + y
count = add_fun(sum)
print(count) # 3
还可以将add_fun的参数传递给sum进行处理:
def add_fun(fun,num1,num2):
count = fun(num1, num2)
return count
def sum(x, y):
return x + y
count = add_fun(sum, 1, 2)
print(count) # 3
- 匿名函数,lambda()。语法:lambda 参数:函数体。
- lambda 不需要写return ,默认就是return出去的。
- 匿名函数用于临时构建一个函数,只用一次。
- 匿名函数只可以写一行代码。
def add_fun(fun):
count = fun(1, 2)
return count
count = add_fun(lambda x, y : x+ y)
print(count) # 3