Python基础10-高阶函数、匿名函数、闭包、装饰器

七、函数(点击跳转)

9、高阶函数

把函数作为参数把函数作为返回值 的函数就是高阶函数

  • 函数作为参数
示例1def fn1(f):
    if f %2 == 0:
        print(f,'这是一个偶数')
    elif f %2 != 0:
        print(f,'这是一个奇数')
    return ''
def fn2(a,b):
    return a ** b
fn1(fn2(5,5))

>> 3125 这是一个奇数
  • 把函数当作返回值
示例1def fn1():
	def fn2(a,b):
		return a+b
	return fn2
r = math()
print(r(2,3))

>> 5

10、匿名函数(lambda)

语法:lambda 表达式

用于表达一些比较简单的函数
匿名的好处就是只会运行一次,运行结束后会在内存中消失

示例1:
r = (lambda a,b: a+b)(10,20)
print(r)

>> 30

11、闭包

闭包也是高阶函数的一种
形成闭包的条件:

1、函数嵌套
2、内部函数被当作返回值
3、内部函数要使用到外部函数的变量

闭包的作用:

自定义一些只有当前函数能够访问的变量(不被全局访问,只能在函数内部进行访问)
可以把一些重要的数据放进闭包

示例1def fn1():
    r = 0
    def fn2(a,b): # 函数嵌套
        r = a ** b # 使用到外部的变量
        return r
    return fn2 # 以内部函数作为返回值
d = fn1()
print(d(2,5))
	
>> 32

12、装饰器

12.1、装饰器的引入

为什么要装饰器:
在函数过多的时候,
1、修改麻烦,耗费时间
2、不方便后期的维护
3、违反ocp原则(开闭原则)

开闭原则:
开放对程序的扩展,关闭对程序的修改

12.2、装饰器

装饰器:
通过定义一个函数对其他函数进行扩展的函数 ( 对一个函数进行包装 )
通过装饰器可以在不修改原来的函数的情况下对函数进行扩展

12.3、装饰器的使用

在函数前面用 @ 列出装饰器

示例1:
@装饰器名字
def fn1():
	pass

示例2def fn(func): #定义一个装饰器,增加打印的输出
    def fn1():
        print('执行开始')
        func()
        print('执行结束')
    return fn1
@fn   # 对fnu1进行扩展
def fnu1(): 
    print('hello world')
@fn   # 对fnu2进行扩展
def fnu2():
    print('hello Python')
fnu1()
fnu2()

>> 执行开始
>> hello world
>> 执行结束
>> 执行开始
>> hello Python
>> 执行结束
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值