python基础十 函数(下)匿名函数、高阶函数、闭包、装饰器

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:传入需要过滤的序列对象。
# 将指定的列表中的偶数,保存在一个新的列表中返回
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():
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值