1. 匿名函数(lambda表达式)
- 简介
用一句话来表达只有返回值的函数,特点:简洁、高效、方便。 - 语法结构
lambda 参数: 返回值
(1) 无参的lambda 表达式
#一般函数:
def func():
return " i love you"
#改写 lambda
fuc = lambda : "i love you"
res = fuc()
print(res)
(2) 有参的lambda 表达式
#带有参数的一般函数
def func(n):
return type(n)
#改写 lambda
func = lambda n: type(n)
res = func(5) #传入实参
print(res)
(3)带有条件判断的lambda 表达式
# 判断任意数的奇偶数
def func(n):
if n % 2 == 0:
return "偶数"
else:
return "奇数"
res = func(7)
print(res)
# 三元运算符
n= 29
res = "偶数" if n % 2 == 0 else "奇数"
print(res)
# 用lambda改造
func = lambda n : "偶数" if n%2==0 else "奇数"
res = func(6)
print(res)
练习题:比较两个数当中的最大值进行返回。用lambda实现
def func(x,y):
if x > y:
return x
else:
return y
2. 高阶函数
- 接收函数作为参数,或者将函数作为返回值返回的函数就是高阶函数
- 能够把函数当做参数传递的就是高阶函数。map filter reduce sorted
# 将指定的列表中的偶数,保存在一个新的列表中返回
list1 = [1,2,3,4,5,6,7,8,9,10]
def func1(n):
if n%2==0:
return True
def func2(f): # f形参
list2 = []
for i in list1:
if f(i): # 此时f <==> func1,f(i)等于调用func1,并且传入i这个实参
list2.append(i)
return list2
res = func2(func1) # 将func1当做实参传入函数func2()
print(res)
- filter函数(高级函数)
- filter()是一个过滤函数
filter()函数中有两个参数:
参数1:传入函数对象
参数2:传入需要过滤的序列对象。
- filter()是一个过滤函数
# 将指定的列表中的偶数,保存在一个新的列表中返回
list1 = [1,2,3,4,5,6,7,8,9,10]
def func1(n):
if n%2==0:
return True
def func2(f): # f 形参
list2 = []
for i in list1:
if f(i):
list2.append(i)
return list2
print(list(filter(func1, list1)))
- filter 和 lambda 配合使用
# lambda filter搭配使用
list1 = [1,2,3,4,5,6,7,8,9,10]
res = lambda n: n%2==0
print(list(filter(res,list1)))
- map(func,iterable)
3. 函数的嵌套
- 函数的嵌套
嵌套在函数的外边叫做外函数
嵌套在函数的里面叫做内函数def outer(): def inner():